https 全稱:Hyper Text Transfer Protocol over Secure Socket Layer,是http的安全版。即http下加入SSL協議層,所以https的安全基礎就是SSL,因此加密內容須要SSL。html
首先須要申請一個證書,能夠申請一個免費的。nginx
如何申請瀏覽器
我是用的騰訊雲,雲產品-》域名與網站-》SSL證書管理安全
而後選免費版的,通常免費版有效期是一年,而後填各類信息,提交審覈就行了,審覈很快的,一個小時工做時間左右吧服務器
審覈成功後就能夠在證書列表裏下載證書了,下載出來是一個壓縮包,裏面有各類版本的證書:Apache、IIS、Nginx、Tomcat;session
咱們這裏用到的是nginx版本證書,一個公鑰,一個私鑰。將其上傳到服務器目錄,我是傳到了 /etc/pki/nginx 目錄下,記住這個目錄哦,待會配置的時候會用到post
先確認nginx安裝時已編譯http_ssl
模塊,也就是執行 nginx -V
命令查看是否存在--with-http_ssl_module
。通常都會有的,若是沒有,則須要從新編譯nginx將該模塊加入。網站
修改Nginx配置加密
打開 Nginx 的默認配置文件 /etc/nginx/nginx.conf ,如何打開和編輯請參考上一篇文章《雲服務器搭建 Nginx 靜態網站》url
打開後有兩個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
到這裏應該就能夠了,本身多實踐多調研吧,每一個人狀況可能不同,但願對你有幫助!