上篇,咱們介紹了HTTPS的SSL證書,以及如何經過acme.sh生成並自動更新SSL證書。 本篇,咱們介紹如何經過nginx配置配置全站https,以及容易踩的坑linux
環境nginx
centos7.2
nginx 1.10.1
acme.sh v2.8.0
本文以msh.com
的域名證書爲例web
想要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
複製代碼
本人指定的證書存放位置爲/mycertify/ssl
bash
打開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;
}
}
# 其餘的同級域名的證書配置,也能夠照搬同上這樣配置
複製代碼
網站雖然升級成爲了https,可是客戶端可能會依然經過原先的http協議訪問。這就須要經過nginx作重定向到httpswebsocket
假如訪問路徑爲 http://b.msh.com
,重定向後的實際訪問路徑爲 https://b.msh.com
socket
server {
listen 80;
server_name b.msh.com www.b.msh.com ;
rewrite ^(.*) https://$host$1 permanent;
}
複製代碼
/usr/local/nginx/sbin/nginx -s reload
複製代碼
注意:到這一步,配置尚未完成!!!。十我的裏面有九個到這一步就覺得大功告成了,然而卻漏掉了不得眼可是最重要的一步,也是不少教程裏面所沒有提到的,那就是開啓防火牆443端口tcp
開啓443端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
複製代碼
重啓防火牆,切記!!!!!!!!
firewall-cmd --reload
複製代碼
至此,大功告成,能夠在瀏覽器裏面輸入地址測試了
系列文章