1. 程式人生 > >Nginx系列-6.配置Nginx的HTTPS

Nginx系列-6.配置Nginx的HTTPS

Linux Nginx HTTPS

Nginx系列-6.配置Nginx的HTTPS

目錄 - Nginx系列

Nginx系列-1.Linux下安裝Nginx
Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架構
Nginx系列-3.配置Nginx虛擬主機
Nginx系列-4.Nginx日誌配置及日誌切割
Nginx系列-5.配置Nginx的防盜鏈
Nginx系列-6.配置Nginx的HTTPS
Nginx系列-7.配置Nginx使用uwsgi支持web.py框架
Nginx系列-8.配置Nginx+Apache實現動靜分離
Nginx系列-9.配置NFS實現Nginx實現動靜分離

Nginx系列-10.采用Nginx搭建正向代理服務
Nginx系列-11.配置Nginx反向代理和負載均衡


實驗環境
一臺最小化安裝的 CentOS7 虛擬機
nginx 的版本為 1.12.2
一臺某廠商的 CentOS7 雲服務器

一、本地實驗:準備環境

  1. 修改配置文件,建立一個虛擬主機

    vim /etc/nginx/conf.d/vhosts.conf

    添加如下內容

    server {
        listen  80;
        server_name site1.test.com;
        root    /var/wwwroot;
        index   index.html;
        location / {
        }
    }

    技術分享圖片

  2. 建立網站根目錄,並添加主頁文件

    mkdir /var/wwwroot
    cd /var/wwwroot
    echo -e "main site" >> index.html
  3. 重啟nginx服務

    systemctl restart nginx
  4. 關閉防火墻

    setenforce 0
    systemctl stop firewalld
    systemctl disable firewalld
  5. 在宿主機修改C:\Windows\System32\drivers\etc\hosts文件
    修改site1.test.com的映射
    192.168.204.133   site1.test.com

二、本地實驗:頒發網站認證證書

  1. 檢查網站認證證書

    rpm -qa | grep ssl

    技術分享圖片

  2. 建立/etc/nginx/ssl目錄,並生成RSA秘鑰

    mkdir /etc/nginx/ssl
    cd /etc/nginx/ssl
    openssl genrsa -out server.key 2048

    技術分享圖片

  3. 生成服務器CSR證書請求文件,註意和站點(server_name)名稱一致
    按提示輸入信息

    openssl req -new -key server.key -out server.csr

    技術分享圖片

  4. 生成服務器認證證書
    openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

    技術分享圖片

三、本地實驗:配置HTTPS網站

  1. 編輯nginx配置文件

    vim /etc/nginx/conf.d/vhosts.conf

    修改為如下內容

    server {
        listen  443;
        server_name site1.test.com;
        root    /var/wwwroot;
        index   index.html;
        # ssl configure
        ssl on;
        ssl_certificate /etc/nginx/ssl/server.crt;
        ssl_certificate_key /etc/nginx/ssl/server.key;
        # location
        location / {
        }
    }

    技術分享圖片

  2. 重啟nginx服務

    systemctl restart nginx
  3. 在宿主機訪問https://site1.test.com
    技術分享圖片

  4. 查看證書內容
    技術分享圖片

四、上雲實驗:在騰訊雲申請並配置ssl證書

  1. 登錄騰訊雲
    點擊訪問 騰訊雲

  2. 依次點擊產品->域名與網站->SSL證書
    技術分享圖片

  3. 選擇域名型免費版(DV)
    技術分享圖片

  4. 填寫域名和郵箱地址
    技術分享圖片

  5. 驗證域名,可以選擇DNS驗證文件驗證,這裏選擇的文件驗證

  6. 根據提示,在/.well-known/pki-validation/目錄下建立fileauth.txt文件,並添加相關內容
    技術分享圖片

  7. 等待審核通過
    技術分享圖片

  8. 點擊證書詳情,獲取證書
    技術分享圖片

  9. 安裝證書
    將域名 www.domain.com 的證書文件1_www.domain.com_bundle.crt 、私鑰文件2_www.domain.com.key保存到同一個目錄,例如/ect/nginx/ssl目錄下。
    更新配置文件如下

    server {
        listen 443;
        server_name www.domain.com; #填寫綁定證書的域名
        ssl on;
        ssl_certificate /etc/nginx/ssl/1_www.domain.com_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/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;
        }
    }

    技術分享圖片
    配置完成後,先用bin/nginx –t來測試下配置是否有誤,正確無誤的話,重啟nginx。就可以使 https://www.domain.com 來訪問了。

  10. http跳https(可選)
    對於用戶不知道網站可以進行https訪問的情況下,讓服務器自動把http的請求重定向到https。
    在服務器這邊的話配置的話,可以在頁面裏加js腳本,也可以在後端程序裏寫重定向,當然也可以在web服務器來實現跳轉。Nginx是支持rewrite的(只要在編譯的時候沒有去掉pcre)
    在http的server裏增加

    rewrite ^(.*) https://$host$1 permanent;

    這樣就可以實現80進來的請求,重定向為https了。

  11. 重啟nginx服務

    systemctl restart nginx
  12. 測試訪問
    訪問http://[your_domain]可以跳轉到https端口上
    訪問https://[your_domain]亦可正常訪問
    技術分享圖片

Nginx系列-6.配置Nginx的HTTPS