最近公司出于安全考虑,需要将登录页做成https访问,其他页面仍采用http访问,环境是Linux平台,web服务器采用Tomcat + Nginx。之前没接触过nginx,这两天网上查资料,试了好多,终于有点小成果,特此做一下记录。目前还存在一些问题,希望各位多多指教。下面说一下我的具体做法:

1.将nginx解压到C盘根目录,重命名文件夹为Nginx(版本:1.3.5)。

2.生成自签名证书(采用OpenSSL生成),生成工具下载:绿色版OpenSSL工具.rar自签名测试证书工具.rar

3.将生成的证书文件server.cer和server.key分别都拷贝到Tomcat和Nginx的conf目录下,双击生成的root.cer根证书,然后安装证书,将其安装到受信任的根证书颁发机构(如不安装,访问时浏览器会提示证书错误)。

4.配置Tomcat的server.xml文件和web工程的web.xml文件:

https配置:

1 <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
2         SSLEnabled="true" maxThreads="150"
3         scheme="https" secure="true" disableUploadTimeout="true"
4         enableLookups="false" acceptCount="100" clientAuth="false"
5         SSLCertificateFile="C:/Program Files/Tomcat 6.0/conf/server.cer"
6         SSLCertificateKeyFile="C:/Program Files/Tomcat 6.0/conf/server.key"
7         SSLVerifyClient="none" sslProtocol="TLS" />

虚拟目录配置:

1 <Host name="localhost"  appBase="C:\nginx\html"
2             unpackWARs="true" autoDeploy="true"
3             xmlValidation="false" xmlNamespaceAware="false">

web.xml文件中加入如下配置:

01      <!-- 登录页采用https访问 -->
02 <security-constraint>
03     <web-resource-collection>
04         <web-resource-name>SSL</web-resource-name>
05         <url-pattern>/index/*</url-pattern>
06     </web-resource-collection>
07     <user-data-constraint>
08         <transport-guarantee>CONFIDENTIAL</transport-guarantee>
09     </user-data-constraint>
10 </security-constraint>

5.配置Nginx的nginx.conf文件:

01     server {
02         listen       80;
03         server_name  localhost;#域名,可以多个
04  
05         #charset koi8-r;
06  
07         #access_log  logs/host.access.log  main;
08          
09        #配置规则
10          location / {
11               if (!-f $request_filename){
12                 rewrite ^/pages/common/(.*)$ /error.jsp;
13             }
14             root   yddweb;
15             #index  index.jsp;
16               proxy_pass http://localhost:8080;
17               proxy_set_header Host $host:80;
18             proxy_set_header X-Real-IP $remote_addr;
19             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
20             proxy_set_header Via "nginx";
21        }
22  
23          location ^~ /pages/$ {
24             root   yddweb;
25             #index  index.jsp;
26               proxy_pass http://localhost:8080;
27               proxy_set_header Host $host:80;
28             proxy_set_header X-Real-IP $remote_addr;
29             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
30             proxy_set_header Via "nginx";
31         }
32  
33         #location ~ \.(gif|jpg|png|js|css)$ {
34             #规则
35         #}
36     }
37  
38     # HTTPS server
39     #
40     server {
41         listen       443;
42         server_name  localhost:443;
43  
44         ssl                  on;
45         ssl_certificate      server.cer;#
46         ssl_certificate_key  server.key;
47  
48         ssl_session_timeout  5m;
49  
50         #ssl_protocols  SSLv2 SSLv3 TLSv1;
51         #ssl_ciphers  HIGH:!aNULL:!MD5;
52         #ssl_prefer_server_ciphers   on;
53  
54         #配置规则
55         location ^~ /index/.jsp$ {
56             root   yddweb;
57             index  login.jsp;
58               proxy_pass https://localhost:8443;
59               proxy_set_header Host $host:443;
60             proxy_set_header X-Real-IP $remote_addr;
61             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
62             proxy_set_header Via "nginx";
63         }
64         location ~ ^/(WEB-INF)/ {
65             deny all;
66         }
67     }
68 }

6.web工程的截图:

LoginServlet的代码:

1 HttpSession session = request.getSession(true);
2         String name = request.getParameter("name").trim();
3         session.setAttribute("curuser", name);
4         String url = "http://"+request.getServerName()+request.getContextPath()+"/pages/system/myinfo.jsp";     response.sendRedirect(url);

目前存在的问题(希望各位多多指教):

1.在本机访问https正常,其他机器访问浏览器提示证书错误。

2.location规则的配置,由于本人水平有限,对location规则的配置不是很了解,所以location目前不太会配置(配置要求:index目录下的页面采用https访问,其他页面全部采用http访问)。

参考资料:

证书生成与配置:http://www.ert7.com/install/sslinstall/1244.html

Windows下Tomcat+nginx配置证书实现登录页https访问的更多相关文章

  1. windows下tomcat+nginx+openssl配置双向认证

    1. 基础知识 CA证书:https://blog.csdn.net/yangyuge1987/article/details/79209473 SSL双向认证原理:https://blog.csdn ...

  2. windows下用nginx配置https服务器

    1.安装nginx 先到nginx官网下在nginx http://nginx.org/en/download.html 将下载好的文件解压出来修改文件名为 nginx ,然后拷贝到C盘下,目录如下: ...

  3. Windows下用Nginx配置遇到的问题

    Nginx是一款轻量级的web服务器/反向代理服务器,更详细的释义自己百度了.目前国内像新浪.网易等都在使用它.先说下我的服务器软件环境: 系统:Windows Server + IIS + ngin ...

  4. windows下使用nginx配置tomcat集群

    转自:https://blog.csdn.net/csdn15698845876/article/details/80658599

  5. 烂泥:Windows下安装与配置Nginx web服务器

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前几篇文章,我们使用nginx都是在linux环境下,今天由于工作的需要.需要在windows环境也使用nginx搭建web服务器. 下面记录下有关ng ...

  6. windows下基于IIS配置ssl证书遇到的坑

    前几天配置windows下基于IIS配置ssl证书 完全按照步骤执行 绑定https网址后,一直显示:无法访问此网站 检查了443端口,还有防火墙限制,没发现什么 足足困扰了我好几天 后来突然想到前不 ...

  7. 环境变量(windows下tomcat问题);shh连接虚拟机网络配置

    环境变量(windows下tomcat问题) 有tomcat有jdk 再配置环境变量:参考 提示:若选择“用户变量”,则本次配置的变量只对该用户有效          若选择“系统变量”,则对所有用户 ...

  8. windows下安装和配置nginx

    下载nginx 到官网下载window版的nginx http://nginx.org/ 配置环境变量 解压到本地的某个路径下, 打开cmd窗口,cd到nginx的目录下 这里要注意cd的时候要加/d ...

  9. Windows下tomcat进程监控批处理程序

    在Windows下tomcat进程监控批处理程序脚本如下: @echo off ::tomcat安装目录 set _tomcatDir=E:\myFiles\apache-tomcat-8.5.31 ...

随机推荐

  1. kubernetes-dashboard

    1.导入kubernetes-dashboard 镜像 [root@node1 DNS]# docker load < kube-dashboard.tar 6bc90c4dba69: Load ...

  2. MySQL不容忽视SQL_MODE的设置

    CREATE DATABASE db_test; CREATE TABLE `tb1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT ...

  3. linux下常用的日志分析命令【转】

    形如下面这样的access.log日志内容: 211.123.23.133 – - [10/Dec/2010:09:31:17 +0800] “GET /query/trendxml/district ...

  4. 洛谷 P1270 “访问”美术馆

    P1270 “访问”美术馆 题目描述 经过数月的精心准备,Peer Brelstet,一个出了名的盗画者,准备开始他的下一个行动.艺术馆的结构,每条走廊要么分叉为两条走廊,要么通向一个展览室.Peer ...

  5. 洛谷 P1262 间谍网络==Codevs 4093 EZ的间谍网络

    4093 EZ的间谍网络 时间限制: 10 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B ...

  6. poj 2528 Mayor's posters 线段树 || 并查集 离线处理

    题目链接 题意 用不同颜色的线段覆盖数轴,问最终数轴上有多少种颜色? 注:只有最上面的线段能够被看到:即,如果有一条线段被其他的线段给完全覆盖住,则这个颜色是看不到的. 法一:线段树 按题意按顺序模拟 ...

  7. SQL Server 2005 无法连接到 127.0.0.1

    [问题描述]如果连接本机的数据库服务器,服务器名称可填: 127.0.0.1或localhost或本机机器全名(比如HOME),有时候用本机机器名可以登录SQL Server 2005,但用127.0 ...

  8. android的布局-----RelativeLayout(相对布局)

    学习导图 注:父容器定位的属性值只能是Boolean ,兄弟组件定位的属性值只能是ID 典型案例(梅花) <?xml version="1.0" encoding=" ...

  9. [SaltStack] 基础介绍

    今天有时间把以前研究过的saltstack梳理总结下 -:) salt是干什么的我就不多说了, 大家Google下资料很多的, 简单来说就是func+puppet: 配置文件管理 远程命令调用 Cro ...

  10. springBoot api接口

    application/json 请求接口 @RequestMapping(value = "/getBaseData", method = RequestMethod.POST, ...