什么是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
到這里應該就可以了,自己多實踐多調研吧,每個人情況可能不一樣,希望對你有幫助!