1. 規划
域名 | 解析IP | Nginx代理 |
htpps://www.devcult.com | 47.88.10.155 | |
htpps://auto.devcult.com | 47.88.10.155 | https://www.automa.com |
htpps://www.automa.com | 103.200.200.203 |
本次實驗用了2個一級域名,1個二級域名,2個ip地址;實現功能如上圖所示,要求全部使用https,並且一級域名實現自動補全www。
2. 前提准備
- 47.88.10.155、103.200.200.203分別部署nginx
- 解析ip分別在域名購買商解析
- ssl證書需要申請3個,分別對應兩個一級域名和一個二級域名
3. Nginx 證書部署
兩台主機47.88.10.155、103.200.200.203的nginx配置如下:
nginx啟動路徑:/usr/local/nginx/sbin/nginx
nginx配置文件路徑:/usr/local/nginx/conf/nginx.conf
以47.88.10.155為例說明配置ssl證書:
3.1 進入配置文件編輯:
vim /usr/local/nginx/conf/nginx.conf
3.2 .在http節點下下新增或修改:
http { include mime.types; default_type application/octet-stream; #配置https網站配置文件夾 include /usr/local/nginx/conf/sites-enabled/*.conf; ... server { listen 80; #http 帶www和不帶www的入口 server_name devcult.com www.devcult.com; #可選,這里是把所有http請求全部重定向到https return 301 https://www.devcult.com$request_uri; location / { root html; index index.html index.htm; } ... } }
3.3 .新增網站ssl配置文件夾和配置文件
mkdir /usr/local/nginx/conf/sites-enabled
3.4 證書安裝
3.4.1 devcult.com域名配置ssl
把申請的證書下載到服務器上(此處以騰訊雲秘鑰格式為例,使用亞洲誠信(TrustAsia)證書,其他類似),里面包含:
證書文件1_devcult.com_bundle.crt 、私鑰文件2_devcult.com.key
將域名 www.devcult.com 的證書文件1_devcult.com_bundle.crt 、私鑰文件2_devcult.com.key保存到同一個目錄,本示例在/usr/local/nginx/conf目錄下。
新建Nginx根目錄下 conf/sites-enabled/www.devcult.com.conf 文件如下:
[root@aliyun ~]# cat /usr/local/nginx/conf/sites-enabled/www.devcult.com.conf server { listen 443 ssl; #填寫綁定證書的域名 server_name devcult.com; #跳轉www:把https://devcult.con 重定向到 http://www.devcult.com return 301 http://www.devcult.com$request_uri; #證書名稱,需要跟證書文件名一致 ssl_certificate 1_devcult.com_bundle.crt; ssl_certificate_key 2_devcult.com.key; ssl_session_cache shared:SSL:1m; 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; } } server { listen 443 ssl; #填寫綁定證書的域名 server_name www.devcult.com; #證書名稱,需要跟證書文件名一致 ssl_certificate 1_devcult.com_bundle.crt; ssl_certificate_key 2_devcult.com.key; ssl_session_cache shared:SSL:1m; 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; } }
注:這里設置兩個server的作用是為了讓https://devcult.com 跳轉至https://www.devcult.com
配置完成后,先用 sbin/nginx -t 來測試下配置是否有誤,正確無誤的話,重啟nginx。就可以使 https://www.devcult.com
來訪問了。
注:
配置文件參數 | 說明 |
---|---|
listen 443 | SSL訪問端口號為443 |
ssl on | 啟用SSL功能 |
ssl_certificate | 證書文件 |
ssl_certificate_key | 私鑰文件 |
ssl_protocols | 使用的協議 |
ssl_ciphers | 配置加密套件,寫法遵循openssl標准 |
3.4.2 automa.com域名配置ssl
參考3.4.1
3.4.3 automa.devcult.com域名配置ssl
二級域名 automa.devcult.com 代理跳轉 automa.com(或任意IP)配置:
把申請的二級域名證書下載到服務器上(此處以騰訊雲秘鑰格式為例,使用亞洲誠信(TrustAsia)證書,其他類似),里面包含:
證書文件1_automa.devcult.com_bundle.crt 、私鑰文件2_automa.devcult.com.key
將二級域名 automa.devcult.com 的證書文件1_automa.devcult.com_bundle.crt 、私鑰文件2_automa.devcult.com.key保存到同一個目錄,本示例在/usr/local/nginx/conf目錄下。
新建Nginx根目錄下 conf/sites-enabled/automa.devcult.com.conf 文件如下:
cat /usr/local/nginx/conf/sites-enabled/automa.devops-cultural.club.conf
server {
listen 443 ssl;
server_name automa.devcult.com;
server_name_in_redirect off;
ssl_certificate 1_automa.devcult.com_bundle.crt;
ssl_certificate_key 2_automa.devcult.com.key;
ssl_session_cache shared:SSL:1m;
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 / {
tcp_nodelay on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass https://www.automa.com;
}
}
3.5 使用全站加密,http自動跳轉https(可選)
對於用戶不知道網站可以進行https訪問的情況下,讓服務器自動把http的請求重定向到https。
在服務器這邊的話配置的話,可以在頁面里加js腳本,也可以在后端程序里寫重定向,當然也可以在web服務器來實現跳轉。Nginx是支持rewrite的(只要在編譯的時候沒有去掉pcre)
在http的server里增加
rewrite ^(.*) https://$host$1 permanent;
或者
return 301 https://www.devcult.com$request_uri;
這樣就可以實現80進來的請求,重定向為https了。詳情參考3.2
4.測試
輸入地址 | 跳轉地址 | 證書合法 |
devcult.com | https://www.devcult.com | 合法 |
www.devcult.com | 合法 | |
https://devcult.com | 合法 | |
https://www.devcult.com | 合法 | |
automa.devcult.com | https://automa.devcult.com 實際訪問內容為https://www.automa.com |
合法 |
automa.com | https://www.automa.com |
合法 |
www.automa.com | 合法 | |
https://automa.com | 合法 | |
https://www.automa.com | 合法 |