1. 程式人生 > >nginx啟用https訪問 雲伺服器搭建 Nginx 靜態網站

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

到這裡應該就可以了,自己多實踐多調研吧,每個人情況可能不一樣,希望對你有幫助!