内容简介:每日一博 | Nginx+SSL+Tomcat+CDN 部署总结
之前在度娘搜索资料,无意间看到一些个人站点的博客都用了https协议,在浏览器地址栏中被标记为绿色的“安全”,前些天特地给自己负责的小项目升级成https协议,其优点这里不再赘述,小伙伴们可以自行百度,今天把整合部署分享在这里,希望小伙伴们少走弯路~
效果如下:
软件版本如下:
System | Centos 6.5 |
Nginx | Tengine/2.1.2 (nginx/1.6.2) |
SSL证书 | Let's Encrypt 免费SSL证书 |
Tomcat | Apache-tomcat-8.0.47 |
CDN | Cloudflare.com |
一、生成SSL证书
首先我们创建一个用来存放letsencrypt生成证书项目的路径并进入:
cd /usr/local/letsencrypt
接下来我们克隆letsencrypt项目:
git clone https://github.com/letsencrypt/letsencrypt
开始生成SSL证书:
./letsencrypt-auto certonly --standalone --email test@qq.com -d www.test1.com -d www.test2.com --agree-tos
这里一定注意:
(1). 域名绑定在国内DNS服务器无法生成,需要先将DNS服务器切换到DNS服务商,例如ClouldFlare、Godaddy、Dnsever后才能正常生成!
(2). web服务需要处于关闭状态,注意关闭nginx和80端口的占用!(不间断服务方式生成可以自行百度)
(3). -d 代表domain 可以同时生成多个域名对应证书,生成后我们可以在默认目录中看到:
/etc/letsencrypt/live/www.test.com/ cert.pem(用户证书) chain.pem(中间证书) fullchain.pem(证书链) privkey.pem(证书私钥)
最后我们生成Perfect Forward Security(PFS)键值,具体作用可以自行百度:
mkdir /etc/ssl/private/ -p cd /etc/ssl/private/ openssl dhparam 2048 -out dhparam.pem
二、Nginx配置SSL证书及Tomcat代理
#Tomcat 8080端口 upstream tomcat_8080{ server 127.0.0.1:8080 weight=1; } #将所有http协议内容重定向到https协议 server { listen 80; server_name www.test.com; rewrite ^ https://$server_name$request_uri? permanent; } #https协议 server { listen 443; server_name www.test.com; # letsencrypt生成的文件 ssl on; ssl_certificate /etc/letsencrypt/live/www.test.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/www.test.com/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets on; ssl_dhparam /etc/ssl/private/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 一般推荐使用的ssl_ciphers值: https://wiki.mozilla.org/Security/Server_Side_TLS ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128:AES256:AES:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK'; ssl_prefer_server_ciphers on; # 代理tomcat location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Cookie $http_cookie; proxy_pass http://tomcat_8080; #proxy_redirect default; } access_log /home/wwwlogs/www.test.com_access.log; error_log /home/wwwlogs/www.test.com_error.log; }
三、Tomcat的SSL配置:
1. Connector节点将redirectPort="8443"修改为 redirectPort="443" proxyPort="443"最终为:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" proxyPort="443" />
2. 找到Engine节点,在最后一个Host标签后加入:
<Host name="www.test.com" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Valve className="org.apache.catalina.valves.RemoteIpValve" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto"/> <Context docBase="/www/java/projectName" path="" crossContext="true" debug="3" privileged="true" reloadable="false" deubt="true" /> </Host>
四:CloudFlare CDN设置 (这里很重要) :
我们将域名解析到自己服务器后,点击Crypto选项卡,将SSL状态修改为 Full(strict) 模式,在这种模式下会使用你服务器中的ssl证书,否则会导致页面无限301跳转,导致chrome提示重定向次数过多,请求失败!
五:参考文献:
1. Nginx+SSL整合 http://blog.csdn.net/sheng119/article/details/72956717
2. Tomcat+SSL整合 https://www.cnblogs.com/zhanghaoh/p/5293158.html
3. 解决CloudFlare CDN无限301重定向问题 答案在9楼 https://www.v2ex.com/t/188230#r_2026842
六:搜索引擎优化建议:
如果是外网项目,建议到百度站长平台,全站HTTPS协议申请,HTTPS协议也在排名算法之一。
以上所述就是小编给大家介绍的《每日一博 | Nginx+SSL+Tomcat+CDN 部署总结》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Fabric kafka多机部署总结
- Docker Swarm部署应用的总结
- 【Vue项目总结】项目nginx部署
- 总结—Harbor仓库部署和使用问题集锦
- Spring Boot Tomcat 容器化部署实践与总结
- linux 部署golang 项目(直接部署和基于nginx部署)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
挑战程序设计竞赛
秋叶拓哉、岩田阳一、北川宜稔 / 巫泽俊、庄俊元、李津羽 / 人民邮电出版社 / 2013-7-1 / CNY 79.00
世界顶级程序设计高手的经验总结 【ACM-ICPC全球总冠军】巫泽俊主译 日本ACM-ICPC参赛者人手一册 本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。 本书适合程序设计......一起来看看 《挑战程序设计竞赛》 这本书的介绍吧!