如何在nginx上配置https服務
證書準備
如果是線上服務,需要使用經過CA認證中心認證之後的證書(不然用戶瀏覽器會報不安全警告)。如果僅作測試使用,則可以跳過認證中心,使用自簽名證書。
nginx配置
server {
listen 443 ssl;
server_name ssl.csw.com;
#證書文件
ssl_certificate server.crt;
#私鑰文件
ssl_certificate_key server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
try_files $uri $uri/ /index.php?$query_string;
root /ssl/public;
index index.html index.htm index.php;
}
...
}
- https默認使用443端口
- ssl_certificate:證書文件地址,確保nginx啓動用戶有權讀取
- ssl_certificate_key:私鑰文件地址,確保nginx啓動用戶有權讀取
- ssl_protocols和ssl_ciphers指令可以用來強制用戶連接只能引入SSL/TLS那些強壯的協議版本和強大的加密算法。從1.0.5版本開始,nginx默認使用“ssl_protocols SSLv3 TLSv1”和“ssl_ciphers HIGH:!aNULL:!MD5”,所以只有在之前的版本,明確地配置它們纔是有意義的。從1.1.13和1.0.12版本開始,nginx默認使用“ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2”。
測試配置是否有效
nginx -t
沒有報錯的話,說明配置無誤,重啓nginx就可以通過https方式訪問站點了
瀏覽器信任
我本地用的是自簽名證書,主流的瀏覽都會報危險警報,信任就可以了(這個操作其實很危險,很可能會信任一些危險的網站)。