关于nginx+tomcat环境实现https访问协议,部署方法网上一直有两种说法:1.nginx和tomcat都要部署ssl证书2.nginx部署ssl证书,tomcat增加ssl支持。nginx+tomcat服务器环境部署SSL证书的方法如下:
一. 申请SSL证书
请到SSL证书申请页面申请SSL数字证书,DV域名型的SSL证书比较便宜,证书颁发快。
二.部署证书到nginx并配置
nginx的证书部署相对简单。
1.确定nginx是否安装了ssl模块,如果没有需要重新make install。(建议 pcre-8.38 zlib-1.2.8 openssl-1.0.2g 版本太高可能导致编译失败)
2.把厂商提供的 domain.crt 内容追加到 domain.cer, 然后把 domain.key 和 domain.cer 放到Nginx服务器
3.nginx.conf 增加https支持。主要是配置 80 和 443 端口的监听
server { listen 80; server_name x; rewrite ^(.*)$ https://$host$1 permanent; } server { listen 443; server_name x; ssl on; ssl_certificate /etc/nginx/server.cer; ssl_certificate_key /etc/nginx/server.key; ssl_session_timeout 5m; ssl_protocols TLSv1; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { client_max_body_size 16m; client_body_buffer_size 128k; proxy_pass http://online/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; proxy_next_upstream off; proxy_connect_timeout 30; proxy_read_timeout 300; proxy_send_timeout 300; } }
这里做了http强跳到https,不需要这个功能,可以去掉 rewrite ^(.*)$ https:
三.tomcat增加对https协议的支持
1.Connector节点加入 redirectPort="443" proxyPort="443"
2.加入新的Value节点 <Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"/>
大功告成!