HTTPS是現代Web應用程序的安全標準。這篇文章將介紹如何使用Nginx配置HTTPS,從生成和簽名SSL證書,到配置Nginx以使用該證書來提供安全通信。
一、生成自簽名的SSL證書
在使用HTTPS之前,必須為您的網站生成一個SSL證書。本部分將介紹如何使用OpenSSL生成自簽名的SSL證書。
sudo openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 -keyout /etc/nginx/ssl/nginx.key \
-out /etc/nginx/ssl/nginx.crt
此命令將在/etc/nginx/ssl目錄中生成名為nginx.key和nginx.crt的SSL證書。其中,nginx.key 是用於加密和解密HTTPS流量的私鑰,nginx.crt 是用於驗證安全通信的公鑰。
然後,將SSL證書放在一個可訪問的位置,以便Nginx能夠找到它們。
sudo mkdir -p /etc/nginx/ssl
sudo cp /path/to/your/nginx.crt /etc/nginx/ssl/
sudo cp /path/to/your/nginx.key /etc/nginx/ssl/
二、安裝和配置Nginx
本部分將介紹如何安裝Nginx並配置SSL。
首先,安裝Nginx。
sudo apt-get update
sudo apt-get install nginx
接下來,編輯Nginx的配置文件,啟用SSL和處理HTTP請求的塊,並指定SSL證書位置。
sudo nano /etc/nginx/sites-enabled/default
在server塊中,添加以下內容:
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
該文件現在應該類似於:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
}
保存並關閉文件。
最後,重新啟動Nginx以使更改生效:
sudo systemctl restart nginx
三、測試HTTPS配置
完成以下步驟以測試SSL配置是否正確:
- 在Web瀏覽器中,導航到您的Web伺服器的域名或IP地址,以http:// 或 https:// 開頭。
- 在地址欄中,輸入https:// 和您的Web伺服器的域名或IP地址。
- 如果瀏覽器顯示網站並沒有任何警告,則HTTPS已成功配置。
四、重定向HTTP到HTTPS
現在您已經配置了HTTPS,但可能仍然允許使用HTTP訪問您的伺服器,該配置旨在將HTTP請求重定向到HTTPS。
將以下內容添加到您的Nginx配置文件(在server塊中):
if ($scheme != "https") {
return 301 https://$server_name$request_uri;
}
該文件現在應該類似於:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
if ($scheme != "https") {
return 301 https://$server_name$request_uri;
}
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
}
保存並關閉文件,然後重新啟動Nginx以使更改生效。
sudo systemctl restart nginx
現在,對於任何HTTP請求,都將自動重定向到HTTPS。
五、啟用HSTS
HTTP Strict Transport Security(HSTS)是一個安全標誌,通過設置響應標頭,將客戶端瀏覽器欽定為只與您的網站使用SSL通信。啟用HSTS可以提高安全性。
編輯Nginx配置文件,設置以下內容(在server塊中):
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
該文件現在應該類似於:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
if ($scheme != "https") {
return 301 https://$server_name$request_uri;
}
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}
保存並關閉文件,然後重新啟動Nginx以使更改生效。
sudo systemctl restart nginx
現在,瀏覽器將始終使用HTTPS與您的伺服器通信,即使用戶手動使用HTTP也是如此。
六、結論
通過執行上述步驟,您可以對Nginx配置HTTPS進行全面安全性設置,從而更好地保護您的Web應用程序和用戶數據。
原創文章,作者:TKRYS,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332781.html