如何在 Nginx 中設定升級不安全請求

在安全至關重要的數位時代,本指南將示範如何在升級不安全請求中配置升級不安全請求。 Web 開發中的這項關鍵安全功能會引導瀏覽器自動將 HTTP 請求升級為 HTTPS。這有助於確保客戶端和伺服器之間的所有通訊都經過加密,從而提高網站的整體安全性。在 NGINX 中配置此功能有助於為用戶維護安全的瀏覽體驗,並有助於提高 SEO 排名。

本指南將引導您完成在 NGINX 中設定升級不安全請求的步驟,確保所有 HTTP 流量都會重新導向到 HTTPS,從而增強 Web 伺服器的安全性。

在 Nginx 全域新增升級不安全請求

存取 Nginx 設定檔

透過存取 Nginx 設定檔來啟動該過程,通常位於 /etc/nginx/nginx.conf。使用以下命令開啟檔案:

sudo nano /etc/nginx/nginx.conf

請務必注意,您需要管理權限才能編輯此文件。此步驟可確保您所做的任何修改都是安全且經過授權的。

插入升級不安全請求標頭

在 nginx.conf 檔案中,找到 http 堵塞。在此,您必須新增特定行,命令瀏覽器將所有 HTTP 請求升級為 HTTPS。此增強功能對於保護您網站的資料傳輸至關重要。插入以下行:

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

設定範例:

http {
    ...
    add_header Content-Security-Policy "upgrade-insecure-requests";
    ...
}

測試升級不安全請求處於活動狀態

該指令透過確保所有請求自動升級到安全的 HTTPS 連接,從而保護用戶資料並提高可信度,在網站安全中發揮著至關重要的作用。

驗證升級不安全請求的激活

實施變更後,重新啟動 Nginx 以套用它們。使用這個指令:

sudo systemctl restart nginx

若要確認標頭的激活,請使用下列工具執行測試 curl。此工具可協助您檢查網站的回應標頭。執行以下命令:

curl -I http://yourwebsite.com

尋找 Content-Security-Policy: upgrade-insecure-requests 響應中的行。它的存在確認了對不安全請求的升級已成功啟動。

預期終端輸出:

HTTP/1.1 200 OK
Server: nginx/1.18.0 (Ubuntu)
Date: Wed, 20 Dec 2023 12:00:00 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Content-Security-Policy: upgrade-insecure-requests
...

在 Nginx 伺服器區塊中新增升級不安全請求

第 1 步:存取 Nginx 伺服器區塊配置

首先訪問您的網域的特定伺服器區塊。這通常位於 /etc/nginx/sites-available/yourdomain 中。若要編輯此文件,請使用以下命令以確保您擁有必要的管理權限:

sudo nano /etc/nginx/sites-available/yourdomain

此步驟對於對 Nginx 設定進行直接的、特定於網域的設定變更至關重要​​。

在 Nginx 請求標頭中設定升級不安全

在 Nginx 伺服器區塊配置中,重點是透過新增以下內容來增強安全性: upgrade-insecure-requests 指示。這應該放在 location / 堵塞。此指令指示瀏覽器將所有 HTTP 請求切換到更安全的 HTTPS,從而增強網站的資料安全性。

新增以下配置:

server {
    ...
    location / {
        add_header Content-Security-Policy "upgrade-insecure-requests";
    }
    ...
}

此設定有助於保護單一伺服器區塊,特別是當您在同一 Nginx 伺服器上託管多個網域或子網域時。

驗證升級不安全請求的功能

儲存變更後,重新啟動 Nginx 以確保新設定生效:

sudo systemctl restart nginx

若要確認標頭處於活動狀態,請使用類似的工具 curl 檢查 HTTP 回應標頭:

curl -I http://yourdomain.com

與上一節一樣,在回應中尋找 Content-Security-Policy:upgrade-insecure-requests。這確認標頭已正確實現並且對於您的特定伺服器區塊處於活動狀態。

Nginx 升級安全性請求:進階範例

根據請求方法有條件升級

此設定非常適合需要根據 HTTP 請求方法區分行為的場景。它選擇性地應用 Upgrade-insecure-requests 標頭,避免將其用於可能導致資料提交問題的敏感 POST 請求。

map $request_method $upgrade_insecure {
    POST   0;
    default 1;
}

server {
    ...
    location / {
        if ($upgrade_insecure) {
            add_header Content-Security-Policy "upgrade-insecure-requests";
        }
        ...
    }
}

使用者代理特定升級

根據用戶的瀏覽器自訂升級流程對於相容性至關重要。此配置僅針對特定使用者代理程式(例如 Chrome 或 Firefox)啟動升級,從而提供更有針對性的方法。

map $http_user_agent $upgrade_condition {
    ~*chrome 1;
    ~*firefox 1;
    default 0;
}

server {
    ...
    location / {
        if ($upgrade_condition) {
            add_header Content-Security-Policy "upgrade-insecure-requests";
        }
        ...
    }
}

特定於路徑的升級應用程式

將安全性升級應用於網站的特定區域可能至關重要,尤其是在只有某些部分處理敏感資訊的環境中。此設定支援指定路徑的升級,例如 /secure-area/.

server {
    ...
    location /secure-area/ {
        add_header Content-Security-Policy "upgrade-insecure-requests";
        ...
    }
    location / {
        ...
    }
}

將升級與附加安全標頭集成

將 Upgrade-insecure-requests 指令與其他安全標頭結合可以增強伺服器的整體安全性。這種綜合方法非常適合需要強大安全措施的環境。

server {
    ...
    location / {
        add_header Content-Security-Policy "upgrade-insecure-requests; default-src https:";
        add_header X-Content-Type-Options nosniff;
        add_header X-Frame-Options SAMEORIGIN;
        ...
    }
}

使用自訂日誌記錄實施升級

此配置有助於在監視和日誌記錄必不可少的環境中追蹤升級過程。它記錄從 HTTP 升級到 HTTPS 的請求,有助於安全審核和分析。

map $scheme $log_upgrade {
    http 1;
    default 0;
}

server {
    ...
    location / {
        if ($log_upgrade) {
            access_log /var/log/nginx/upgrade.log;
            add_header Content-Security-Policy "upgrade-insecure-requests";
        }
        ...
    }
}

這些進階配置提供了對如何以及何時從 HTTP 升級到 HTTPS 進行細緻入微的控制,滿足特定需求並增強 Nginx 伺服器的安全性和功能。

結論

透過在 NGINX 中設定升級不安全請求,您可以確保所有 HTTP 流量自動升級到 HTTPS,從而增強網站的安全性。此配置不僅可以保護用戶數據,還有助於提高網站的搜尋引擎優化 (SEO)。定期檢查和更新您的 NGINX 設定以保持最佳的安全性和效能。知道您的網路流量是安全且加密的,讓您高枕無憂。

Joshua James
跟我來
Joshua James 的最新帖子 (看全部)

發佈留言