在現代網站中,HTTPS(HTTP Secure)已成為保護用戶資料和確保網站安全的重要標準。使用 Let's Encrypt 免費的 SSL 憑證,結合 Nginx 網頁伺服器,我們可以快速將網站配置為 HTTPS,並自動將 HTTP 流量重定向到 HTTPS。本教程將介紹如何安裝 Nginx、Let's Encrypt 並設置自動重定向。
首先,在您的伺服器上安裝 Nginx。如果您使用的是 Ubuntu 或 Debian 系統,請使用以下命令安裝 Nginx:
sudo apt update
sudo apt install nginx
安裝完成後,啟動並將 Nginx 設置為開機自動啟動:
sudo systemctl start nginx
sudo systemctl enable nginx
您可以使用以下命令檢查 Nginx 是否正確啟動:
sudo systemctl status nginx
Let's Encrypt 提供免費的 SSL 憑證,而 Certbot 是一個自動化工具,專門用來從 Let's Encrypt 獲取並更新憑證。
安裝 Certbot 及其 Nginx 插件:
sudo apt install certbot python3-certbot-nginx
安裝完成後,使用 Certbot 自動從 Let's Encrypt 申請 SSL 憑證並配置到 Nginx。
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
替換 yourdomain.com
為您的實際域名。Certbot 將會進行以下操作:
1. 驗證您的域名擁有權。
2. 生成 SSL 憑證並將其配置到 Nginx。
3. 自動重啟 Nginx 以應用新的憑證。
ertbot 可以自動為您添加 HTTP 到 HTTPS 的重定向規則。如果您希望手動配置,也可以按照以下步驟修改 Nginx 的配置文件。
首先,打開您的 Nginx 配置檔案,位於 /etc/nginx/conf.d/
目錄下。假設您的域名配置文件為 yourdomain.com.conf
:
sudo nano /etc/nginx/conf.d/yourdomain.com.conf
編輯配置檔案如下(針對Streamlit):
server {
listen 443 ssl;
server_name yourdomain.com www.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8501;
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_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
}
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
# 將所有 HTTP 請求重定向到 HTTPS
return 301 https://$host$request_uri;
}
以上配置做了以下工作:
1. 第二個 server 區塊監聽 80 埠(HTTP),並將所有請求重定向到 HTTPS(埠 443)。
2. 第一區塊處理 HTTPS 流量,並加載 Let's Encrypt 提供的 SSL 憑證。
保存並退出文件後,檢查 Nginx 配置是否正確無誤:
sudo nginx -t
如果沒有錯誤,重新加載 Nginx 以應用更改:
sudo systemctl reload nginx
Let's Encrypt 的 SSL 憑證有效期為 90 天。為了避免憑證過期,Certbot 提供了自動更新機制。您可以使用以下命令來模擬憑證更新:
sudo certbot renew --dry-run