2024-09-16|閱讀時間 ‧ 約 24 分鐘

使用 Nginx 與 Let's Encrypt 免費設定 HTTPS 及自動重定向 HTTP 到 HTTPS



    在現代網站中,HTTPS(HTTP Secure)已成為保護用戶資料和確保網站安全的重要標準。使用 Let's Encrypt 免費的 SSL 憑證,結合 Nginx 網頁伺服器,我們可以快速將網站配置為 HTTPS,並自動將 HTTP 流量重定向到 HTTPS。本教程將介紹如何安裝 Nginx、Let's Encrypt 並設置自動重定向。


    步驟 1:安裝 Nginx

    首先,在您的伺服器上安裝 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



    步驟 2:安裝 Certbot 和 Let's Encrypt

    Let's Encrypt 提供免費的 SSL 憑證,而 Certbot 是一個自動化工具,專門用來從 Let's Encrypt 獲取並更新憑證。


    安裝 Certbot 及其 Nginx 插件:

    sudo apt install certbot python3-certbot-nginx


    步驟 3:使用 Certbot 取得 SSL 憑證

    安裝完成後,使用 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 以應用新的憑證。


    步驟 4:自動重定向 HTTP 到 HTTPS

    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 憑證。


    步驟 5:重新載入 Nginx 配置

    保存並退出文件後,檢查 Nginx 配置是否正確無誤:

    sudo nginx -t

    如果沒有錯誤,重新加載 Nginx 以應用更改:

    sudo systemctl reload nginx



    步驟 6:自動更新 SSL 憑證

    Let's Encrypt 的 SSL 憑證有效期為 90 天。為了避免憑證過期,Certbot 提供了自動更新機制。您可以使用以下命令來模擬憑證更新:

    sudo certbot renew --dry-run




    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.