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