1. 程式人生 > >Nginx SSL證書部署,開啟全站HTTPS訪問(多域名)

Nginx SSL證書部署,開啟全站HTTPS訪問(多域名)

我們都知道,現在已經進入了HTTPS時代,連搜尋引擎都會專門為HTTPS網站的索引進行加權。HTTPS的主要特點是更安全,雖然有可能會讓我們的訪問變得稍慢一些,但是保證安全以及與時俱進聽起來很有吸引力。

下面我們就以從騰訊雲申請的免費SSL證書為例,演示下如何通過nginx為我們的網站開啟HTTPS訪問。


歡迎大家關注我的個人部落格【數洞】 【備用站】

一、獲取證書

BAT等大型雲服務提供商都有免費的SSL證書申請通道,鑑於我的域名、伺服器都是從騰訊雲購買,因此我們以騰訊云為例:【騰訊雲SSL證書免費申請】

按要求填寫資訊,基本上二十分鐘內會完成稽核。通過稽核後,將我們的證書下載下來,然後從Nginx資料夾內獲得SSL證書檔案1_www.domain.com_bundle.crt

和私鑰檔案2_www.domain.com.key

二、證書安裝

將域名www.domain.com的證書檔案1_www.domain.com_bundle.crt、私鑰檔案2_www.domain.com.key儲存到nginx目錄下,例如我的nginx的目錄在/etc/nginx目錄下。
更新Nginx根目錄下/etc/nginx/nginx.conf檔案如下:

 server {
        listen 443;
        server_name www.domain.com; #填寫繫結證書的域名
        ssl on;
        ssl_certificate 1_www.
domain.com_bundle.crt; ssl_certificate_key 2_www.domain.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照這個協議配置 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照這個套件配置 ssl_prefer_server_ciphers on; location /
{ root html; #站點目錄 index index.html index.htm; } }

配置完成後,先用nginx –t來測試下配置是否有誤,正確無誤的話,重啟nginx(nginx -s reload)。就可以使用https://www.domain.com來訪問。

注:

配置檔案引數 說明
listen 443 SSL 訪問埠號為 443
ssl on 啟用 SSL 功能
ssl_certificate 證書檔案
ssl_certificate_key 私鑰檔案
ssl_protocols 使用的協議
ssl_ciphers 配置加密套件,寫法遵循 openssl 標準

三、使用全站加密,HTTP自動跳轉HTTPS(可選)

對於使用者不知道網站可以進行HTTPS訪問的情況下,讓伺服器自動把HTTP的請求重定向到HTTPS。
在伺服器這邊的話配置的話,可以在頁面里加js指令碼,也可以在後端程式裡寫重定向,當然也可以在WEB伺服器來實現跳轉。Nginx是支援rewrite的(只要在編譯的時候沒有去掉pcre),在HTTP的server配置裡增加rewrite ^(.*) https://$host$1 permanent;,這樣就可以實現從埠80進來的請求,重定向為HTTPS了。

四、nginx.conf檔案示例

由於我的個人部落格有兩個域名,所以有四個server配置在裡邊,具體如下:

server {
    listen       443;
    server_name  www.data-insights.cn;
    ssl on;
    ssl_certificate 1_www.data-insights.cn_bundle.crt;
    ssl_certificate_key 2_www.data-insights.cn.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    root         /data/www/hexo;

    # 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 {
    }
}

server {
    listen       443;
    server_name  www.data-insight.cn;
    ssl on;
    ssl_certificate 1_www.data-insight.cn_bundle.crt;
    ssl_certificate_key 2_www.data-insight.cn.key;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;
    root         /data/www/hexo;

    # 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 {
    }
}

server {
    listen       80;
    server_name  www.data-insights.cn;
    root         /data/www/hexo;
    rewrite ^(.*) https://$host$1 permanent;

    # 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 {
    }
}

server {
    listen       80;
    server_name  www.data-insight.cn;
    root         /data/www/hexo;
    rewrite ^(.*) https://$host$1 permanent;

    # 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 {
    }
}