Nginx+SSL+Tomcat+CDN部署总结,已实践有效~
2019独角兽企业重金招聘Python工程师标准>>>
之前在度娘搜索资料,无意间看到一些个人站点的博客都用了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_TLSssl_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;# 代理tomcatlocation / { 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协议也在排名算法之一。
以上为个人总结,希望对大家有所帮助,如果有不对的地方大家可以指出,欢迎拍砖:)
转载于:https://my.oschina.net/u/3156074/blog/1607588
Nginx+SSL+Tomcat+CDN部署总结,已实践有效~相关推荐
- Nginx SSL+tomcat集群配置SSL,ngnix配置SSL后js/css访问出现404
最近在做一个项目, 架构上使用了 Nginx +tomcat 集群, 且nginx下配置了SSL,tomcat no SSL,项目使用https协议 但是,明明是https url请求,发现 log里 ...
- windows server下的 Nginx SSL 证书安装部署
由于 github pages 项目中使用后端服务调用只支持使用 https 协议,故需要在原来的 Nginx 服务器中安装 SSL 证书,参考了SSL 证书 Nginx 服务器 SSL 证书安装部 ...
- nginx和tomcat本地部署
下载地址 tomcat nginx pcre 安装 pcre ./configure && make && make install nginx ./configure ...
- kubernetes下的Nginx加Tomcat三部曲之一:极速体验
在生产环境中,常用到Nginx加Tomcat的部署方式,如下图: 从本章开始,我们来实战kubernetes下部署上述Nginx和Tomcat服务,并开发spring boot的web应用来验证环境 ...
- Centos6.2上做nginx和tomcat的集成及负载均衡(已实践)
Centos6.2上做nginx和tomcat的集成及负载均衡 ---------------------------------------------------------Jdk-------- ...
- tomcat服务部署与nginx负载均衡
中间件产品介绍 目前来说IBM的WebSphere. Oracle的Weblogic占据了市场上Java语言Web站点的部分份额.该两种软件由于无与伦比的性能及可靠性等优势被广泛应用于大型互联网公 ...
- (四)Linux环境部署(Centos+Nginx+Tomcat+Mysql) - 安装Tomcat和JDK 以及 Nginx与Tomcat整合
因为在网上发现系统性.严谨(特别是在安全方面)的Linux部署方面的参考文章很少,于是整理以下六篇Linux环境部署的系列性文章,其为本人在实践中,完整的搭建一个基于Linux系统上Centos+Ng ...
- docker安装_使用docker在带有SSL的Nginx反向代理后面部署Quarkus或任何基于Java的微服务...
docker安装 已经有一段时间了,但是根据一位朋友的要求,我将向您展示如何使用docker在Nginx反向代理后面部署Quarkus微服务. 我们会做什么- 我将在centos 8主机上安装dock ...
- Nginx+Memcached+Tomcat集群配置实践(Sticky Session)
准备工作 创建一个简单的web应用,名为session.其中有两个页面,分别如下所示: 页面login.jsp [html] view plaincopy <%@ page language=& ...
最新文章
- Linux -nginx-源码安装
- ArrayList 扩容
- 为了在全球“买买买”,阿里工程师自研了一套海外HR系统
- mybatis解决 1 字节的 UTF-8 序列的字节 1 无效
- 带有API网关的AWS Lambda
- Debian Linux下的Python学习——列表,元组和字典之列表
- 关于TP中的M()方法与D()方法
- Bootstrap3基础 栅格系统 标尺(col-lg/md/sm/xs-1)
- linux下载上传速度查看
- linux mongo 添加用户名和密码,mongodb3.4 安装及用户名密码设置
- 人工智能产生式系统动物识别实验python
- DCMTK读取dcm文件信息环境搭建及经验总结
- Global Shutter(全局快门)与Rolling Shutter(卷帘快门)的区别与比较
- 量化java_用java做量化
- Linuxnbsp;下摄像头驱动支持情况(…
- HDMI 调试之输出RGB888
- unity3d 模型从上到下出现(shader)
- Nginx Web 基础入门
- 在贷款行业中,运营商大数据精准获客,是否真实有效呢
- 测试如何与开发人员进行沟通
热门文章
- 1-冒泡排序C实现(递增递减的简单转换)
- [BUUCTF-pwn]——picoctf_2018_buffer overflow 0
- AbstractListView源码分析4
- linux最基础安装,Linux Nginx最基础的十大安装步骤(2)
- LTE各场景下的密钥处理
- 面向 Java 开发人员的 Scala 指南: 深入了解 Scala 并发性
- yii框架下使用redis
- 【Spring Boot】集成Netty Socket.IO通讯框架
- AndroidTv Home界面实现原理(二)——Leanback 库的主页卡位缩放动画源码解析
- DBA查询命令积累——不断更新