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 雲服務器
一、本地實驗:準備環境
-
修改配置文件,建立一個虛擬主機
vim /etc/nginx/conf.d/vhosts.conf
添加如下內容
server { listen 80; server_name site1.test.com; root /var/wwwroot; index index.html; location / { } }
-
建立網站根目錄,並添加主頁文件
mkdir /var/wwwroot cd /var/wwwroot echo -e "main site" >> index.html
-
重啟
nginx
服務systemctl restart nginx
-
關閉防火墻
setenforce 0 systemctl stop firewalld systemctl disable firewalld
- 在宿主機修改
C:\Windows\System32\drivers\etc\hosts
文件
修改site1.test.com
的映射192.168.204.133 site1.test.com
二、本地實驗:頒發網站認證證書
-
檢查網站認證證書
rpm -qa | grep ssl
-
建立
/etc/nginx/ssl
目錄,並生成RSA
秘鑰mkdir /etc/nginx/ssl cd /etc/nginx/ssl openssl genrsa -out server.key 2048
-
生成服務器
CSR
證書請求文件,註意和站點(server_name
)名稱一致
按提示輸入信息openssl req -new -key server.key -out server.csr
- 生成服務器認證證書
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
三、本地實驗:配置HTTPS網站
-
編輯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 / { } }
-
重啟
nginx
服務systemctl restart nginx
-
在宿主機訪問
https://site1.test.com
- 查看證書內容
四、上雲實驗:在騰訊雲申請並配置ssl證書
-
登錄騰訊雲
點擊訪問 騰訊雲 -
依次
點擊產品
->域名與網站
->SSL證書
-
選擇
域名型免費版(DV)
-
填寫域名和郵箱地址
-
驗證域名,可以選擇
DNS驗證
和文件驗證
,這裏選擇的文件驗證
-
根據提示,在
/.well-known/pki-validation/
目錄下建立fileauth.txt
文件,並添加相關內容
-
等待審核通過
-
點擊
證書詳情
,獲取證書
-
安裝證書
將域名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
來訪問了。 -
http跳https(可選)
對於用戶不知道網站可以進行https訪問的情況下,讓服務器自動把http的請求重定向到https。
在服務器這邊的話配置的話,可以在頁面裏加js腳本,也可以在後端程序裏寫重定向,當然也可以在web服務器來實現跳轉。Nginx是支持rewrite的(只要在編譯的時候沒有去掉pcre)
在http的server裏增加rewrite ^(.*) https://$host$1 permanent;
這樣就可以實現80進來的請求,重定向為https了。
-
重啟
nginx
服務systemctl restart nginx
- 測試訪問
訪問http://[your_domain]
可以跳轉到https端口上
訪問https://[your_domain]
亦可正常訪問
Nginx系列-6.配置Nginx的HTTPS