nginx啟用https訪問 雲伺服器搭建 Nginx 靜態網站
什麼是https?
https 全稱:Hyper Text Transfer Protocol over Secure Socket Layer,是http的安全版。即http下加入SSL協議層,因此https的安全基礎就是SSL,所以加密內容需要SSL。
配置過程
首先需要申請一個證書,可以申請一個免費的。
如何申請
我是用的騰訊雲,雲產品-》域名與網站-》SSL證書管理
然後選免費版的,一般免費版有效期是一年,然後填各種資訊,提交稽核就好了,稽核很快的,一個小時工作時間左右吧
稽核成功後就可以在證書列表裡下載證書了,下載出來是一個壓縮包,裡面有各種版本的證書:Apache、IIS、Nginx、Tomcat;
我們這裡用到的是nginx版本證書,一個公鑰,一個私鑰。將其上傳到伺服器目錄,我是傳到了 /etc/pki/nginx 目錄下,記住這個目錄哦,待會配置的時候會用到
先確認nginx安裝時已編譯http_ssl
模組,也就是執行 nginx -V
命令檢視是否存在--with-http_ssl_module
。一般都會有的,如果沒有,則需要重新編譯nginx將該模組加入。
修改Nginx配置
開啟 Nginx 的預設配置檔案 /etc/nginx/nginx.conf ,如何開啟和編輯請參考上一篇文章《雲伺服器搭建 Nginx 靜態網站》
開啟後有兩個server配置物件
第一個是監聽80埠的,內容請參考如下虛擬碼:
server {
listen 80;
server_name 你的域名 www.你的域名;
root /data/www(你nginx配置的靜態資源目錄);
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
# 將http強制轉https
location / {
rewrite (.*) https://www.你的域名 $1 permanent;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
第二個是監聽443埠的,預設是註釋的,先取消註釋,內容參考如下:
server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name 你的域名 www.你的域名; root /data/www(你nginx配置的靜態資源目錄);
ssl_certificate "/etc/pki/nginx/1_www.dingjianjun.cn_bundle.crt"(你剛才傳到伺服器上的證書地址,叫你記住的哦);
ssl_certificate_key "/etc/pki/nginx/2_www.dingjianjun.cn.key"(你剛才傳到伺服器上的證書地址);
ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
重啟nginx
nginx -s reload
順利的話,你用瀏覽器訪問你的域名,應該就能自動變成https了,就不用看下面的了
----------------------------------------分割線-----------------------------------------------
我自己遇到過一個問題,就是重啟失敗吧,好像是80埠被佔用了
列出監聽的TCP埠
netstat -ltunp
我是把這個衝突的程序殺死了,可以殺死指定PID的程序,比如我上面那個程序的PID是17220
kill 17220
然後再重啟nginx:
nginx -s reload
到這裡應該就可以了,自己多實踐多調研吧,每個人情況可能不一樣,希望對你有幫助!