全站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升級系列(四)項目代碼升級改造

相關文章
相關標籤/搜索