每日一博 | Nginx+SSL+Tomcat+CDN 部署总结

栏目: Java · 发布时间: 7年前

内容简介:每日一博 | Nginx+SSL+Tomcat+CDN 部署总结

之前在度娘搜索资料,无意间看到一些个人站点的博客都用了https协议,在浏览器地址栏中被标记为绿色的“安全”,前些天特地给自己负责的小项目升级成https协议,其优点这里不再赘述,小伙伴们可以自行百度,今天把整合部署分享在这里,希望小伙伴们少走弯路~

效果如下:

每日一博 | Nginx+SSL+Tomcat+CDN 部署总结

软件版本如下:

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 部署总结》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Masterminds of Programming

Masterminds of Programming

Federico Biancuzzi、Chromatic / O'Reilly Media / 2009-03-27 / USD 39.99

Description Masterminds of Programming features exclusive interviews with the creators of several historic and highly influential programming languages. Think along with Adin D. Falkoff (APL), Jame......一起来看看 《Masterminds of Programming》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具