Nginx配置SSL實現https請求並重定向http請求的實現
本篇文章主要記錄下自己的博客網站實現https請求的步驟和自己遇到的一些問題。
環境說明
因為我的網站是部署在騰訊雲上的,騰訊雲同時也提供了免費的SSL證書(有效期1年)。
我們進入SSL證書管理控制台,點擊【申請證書】
image
按照步驟就能申請對應的證書了。
DNS驗證域名身份
騰訊雲提供DNS驗證域名身份,前提是你得開通DNS,然而DNS需要根據流量收費,對於我這個小博客來說不是很值得,所以沒有忽略該方法。
這種方式無需你配置什麼,只需要在控制台簡單操作幾步就可以了,具體可以參考騰訊雲官方文檔,這裡就不過多介紹了。
Nginx 證書部署
首先到你的騰訊雲下載你的證書的壓縮包,解壓後有不同伺服器的證書文件,這裡只要Nginx的就可以了
將Nginx文件中的和上傳至你的伺服器中,我將文件放在了下。
接下來修改你的Nginx配置文件:
server{
listen443;
server_namewww.****.com;#填寫綁定證書的域名
sslon;
ssl_certificate1_www.***.com_bundle.crt;
ssl_certificate_key2_www.***.com.key;
ssl_session_timeout5m;
ssl_protocolsTLSv1 TLSv1.1TLSv1.2;#按照這個協議配置
ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置
ssl_prefer_server_cipherson;
location/ {
roothtml;#站點目錄
indexindex.html index.htm;
}
}
配置完成後,先用來測試下配置是否有誤,正確無誤的話,然後通過重啟nginx。就可以使 來訪問了。
這裡有幾個問題需要注意下:
配置文件的證書文件的地址一定要指定對,可能你沒有放在Nginx的根目錄下。
埠問題,http是80埠,但https是443,在配置nginx的時候千萬別忘記修改埠。
相關參數說明供參考:
http自動跳轉https
配置到這裡如果沒有意外的話已經可以通過https訪問了,但可能很多用戶還是會通過http訪問,所以需要將你原來的http重定向到你的https上。
只需要在Nginx配置中加入下面配置:
rewrite ^ https://$http_host$request_uri? permanent;
但要注意的是,不是在你原來443埠下加,這樣會死循環的,而是另外啟個server,類似於下面的配置:
server{
listen80;
server_namewww.***.com;
rewrite^https://$http_host$request_uri?permanent;# force redirect http to https
}
server{
listen443;
server_namewww.****.com;#填寫綁定證書的域名
sslon;
ssl_certificate1_www.***.com_bundle.crt;
ssl_certificate_key2_www.***.com.key;
ssl_session_timeout5m;
ssl_protocolsTLSv1 TLSv1.1TLSv1.2;#按照這個協議配置
ssl_ciphersECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置
ssl_prefer_server_cipherson;
location/ {
roothtml;#站點目錄
indexindex.html index.htm;
}
}
這樣就能實現重定向了。
如果想同時啟用Http和Https,也可以這樣配置:
server {
listen80;
listen443ssl;
server_name www.***.com;
ssl_certificate www.***.com.crt;
ssl_certificate_key www.***.com.key;
...
}
總結
配置的時候還是需要仔細,跟著步驟來,人品好的話一次就能搞定啦。大家可以親身試驗下。
TAG:Bug生活2048 |