全站HTTPS升级系列(三)nginx配置全站HTTPS

前言

上篇,咱们介绍了HTTPS的SSL证书,以及如何经过acme.sh生成并自动更新SSL证书。 本篇,咱们介绍如何经过nginx配置配置全站https,以及容易踩的坑linux

环境nginx

  • linux服务器,操做系统为 centos7.2
  • nginx 1.10.1
  • acme.sh v2.8.0

本文以msh.com的域名证书为例web

1、给nginx安装ssl模块

想要nginx支持https,必须安装http_ssl_module模块。该模块若是未安装或安装失败,在配置nginx的https时会报unknown directive "ssl"的错centos

首先切换到nginx的安装包目录,而后执行以下命令浏览器

####### 下载你当前版本的nginx包,而且解压 进到目录
./configure --with-http_ssl_module
####### 切记千万不要make install 那样就覆盖安装了
make
####### 将原来的nginx备份 备份以前先关闭当前正在执行的nginx
/usr/local/nginx/sbin/nginx -s stop
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
####### make以后会在当前目录生成 objs 目录
cp objs/nginx /usr/local/nginx/sbin/nginx
####### 而后从新启动nginx
/usr/local/nginx/sbin/nginx
复制代码

2、告知nginx你的证书存放的位置

本人指定的证书存放位置为/mycertify/sslbash

打开nginx安装目录的nginx.conf配置文件。由于是泛域名证书,因此当前域名以及当前域名下的全部次级子域名能够共用一个证书服务器

# 第一个子域名
server {
	# https默认监听的是443 端口
	listen       443 ssl;
	server_name b.msh.com  ;
	# 指定证书位置
    ssl_certificate /mycertify/ssl/msh.com.cer;  
	ssl_certificate_key /mycertify/ssl/msh.com.key;
	
	# 下方的5个配置项是和https无关的,若是想让nginx能正常代理websocket,则必须加上
	# 防止nginx代理websocket时,每隔75秒自动中断
	proxy_connect_timeout 7d;
	proxy_send_timeout 7d;
	proxy_read_timeout 7d;
	# 防止nginx代理websocket 报错
	proxy_set_header Upgrade $http_upgrade;
	proxy_set_header Connection "upgrade";


	location / {
		proxy_pass http://localhost:8585;
	}
}

# 其余的同级域名的证书配置,也能够照搬同上这样配置

复制代码

3、强制将HTTP请求转到HTTPS请求

网站虽然升级成为了https,可是客户端可能会依然经过原先的http协议访问。这就须要经过nginx作重定向到httpswebsocket

假如访问路径为 http://b.msh.com ,重定向后的实际访问路径为 https://b.msh.comsocket

server {
	listen       80;
	server_name b.msh.com  www.b.msh.com ;
	rewrite ^(.*) https://$host$1 permanent;
	
}
复制代码

3、 重启nginx,使以上配置生效

/usr/local/nginx/sbin/nginx  -s reload
复制代码

注意:到这一步,配置尚未完成!!!。十我的里面有九个到这一步就觉得大功告成了,然而却漏掉了不得眼可是最重要的一步,也是不少教程里面所没有提到的,那就是开启防火墙443端口tcp

4、使防火墙放开443端口

开启443端口

firewall-cmd --zone=public --add-port=443/tcp --permanent
复制代码

重启防火墙,切记!!!!!!!!

firewall-cmd --reload
复制代码

至此,大功告成,能够在浏览器里面输入地址测试了

系列文章

全站HTTPS升级系列(一)升级前的科普工做

全站HTTPS升级系列(二)基于 acme.sh从Letsencrypt生成免费的泛域名证书

全站HTTPS升级系列(三)nginx配置全站HTTPS

全站HTTPS升级系列(四)项目代码升级改造

相关文章
相关标签/搜索