1. 程式人生 > >Nginx實現ssl一級、二級域名證書部署並用https訪問代理轉發服務器

Nginx實現ssl一級、二級域名證書部署並用https訪問代理轉發服務器

www. log 所有 null rec write include cal direct

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. 前提準備

  1. 47.88.10.155、103.200.200.203分別部署nginx
  2. 解析ip分別在域名購買商解析
  3. 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 文件如下:

[[email protected] ~]# 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 合法

Nginx實現ssl一級、二級域名證書部署並用https訪問代理轉發服務器