Ubuntu上Nginx配置SSL證書

SSL證書

進入騰訊雲服務器 - 搜索SSL證書 - 證書管理- 申請免費的SSL證書

審覈通過將證書下載到本地解壓,解壓結果獲得5個文件,如下圖:

通過Nginx配置證書,我們只需Nginx文件下的證書文件和私鑰文件傳到服務器, 並放到Nginx的配置文件路徑

  • 1_www.sitven.cn_bundle.crt  證書文件
  • 2_www.sitven.cn.key  私鑰文件

配置文件路徑:/usr/local/nginx/conf (此處爲默認安裝目錄,請根據實際情況操作)

配置Nginx

編輯 Nginx 根目錄下的配置文件nginx.conf 文件。修改內容如下:

注:此操作可通過執行 vim /usr/local/nginx/conf/nginx.conf 命令行編輯該文件。由於版本問題,配置文件可能存在不同的寫法

       例如:Nginx 版本爲 nginx/1.15.0 以上請使用 listen 443 ssl 代替 listen 443ssl on

server {
     #SSL 訪問端口號爲 443
     listen 443 ssl; 
     #填寫綁定證書的域名
     server_name www.sitven.cn; 
     #證書文件名稱
     ssl_certificate 1_www.sitven.cn_bundle.crt; 
     #私鑰文件名稱
     ssl_certificate_key 2_www.sitven.cn.key; 
     ssl_session_timeout 5m;
     #請按照以下協議配置
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
     #請按照以下套件配置,配置加密套件,寫法遵循 openssl 標準。
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
     ssl_prefer_server_ciphers on;
     location / {
        # 網站主頁路徑, 此爲我博客項目。此路徑僅供參考,具體按照實際需求操作
        uwsgi_pass 127.0.0.1:8001;
        include /etc/nginx/uwsgi_params;
     }
 }

配置完成,可通過執行以下命令驗證配置文件問題

sudo nginx -t

若存在問題,請您重新配置或者根據提示修改存在問題

比如證書和私鑰文件沒放到正確的路徑, Nginx就會提示沒有這樣的文件,如下圖:

我們根據錯誤提示將證書與私鑰放到正確的路徑後重新進行驗證

若配置不存在問題,如下圖:

我們重啓 Nginx,即可使用 https://www.sitven.cn進行訪問

HTTP重定向HTTPS

http協議通過80端口通訊的而https協議通過443端口通訊, 所以我們需要做一個重定向, 把80端口的請求重定向到443端口,我們在Nginx配置文件的上一個代碼塊基礎上增加一個server節點提供重定向服務

server {
    listen 80;
    server_name www.你的域名.cn;
    rewrite ^(.*)$ https://${server_name}$1 permanent;
}

如此,我們通過http協議訪問網站時會自動重定向到https

反向代理異常處理

1. 因爲我的Jenkins也是通過Nginx反向代理的,所有出現https反向代理http靜態資源訪問無法加載的情況,Jenkins自動化測試結果的html報告無法通過相對路徑加載頁面靜態文件

解決方法:

add_header Content-Security-Policy upgrade-insecure-requests;

只需要在我們要代理的地方加入即可,代理的Jenkins則加入到Jenkins的location中,如下圖

2. 因爲個人博客網站博文內容的image全部存在七牛,Nginx配置SSL證書後HTTP重定向到HTTPS,七牛儲存空間的image都無法加載

所以,七牛雲儲存空間外鏈域名也需配置SSL證書:

進入騰訊雲服務器SSL證書-證書管理申請七牛雲對象存儲空間配置的外鏈域名所對應的SSL證書

然後進入七牛雲-cdn-域名管理-HTTPS配置,配置上傳SSL證書

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章