簡體   English   中英

當下游處理ssl時,Nginx從同一server_name塊上的http重寫為https

[英]Nginx rewrite to https from http on same server_name block when ssl is handled downstream

我們這個問題已經存在了很久了,它開始使我們陷入困境。 我們在django框架上為用python編寫的客戶端運行一個站點。 然后,我們將nginx用作django的Web服務器/代理。 這通常是最標准的設置,並且效果很好。

問題是我們的客戶在另一台更高的apache服務器上。 該服務器處理ssl終止,並通過普通的http將請求傳遞給我們。 apache服務器接受2個域名上的http和https。

我們可以在nginx級別上輕松地將http重寫為https,但是問題在於用戶可以刪除https並僅使用http。

如果他們位於http://secure.example.com上,是否可以在nginx級別上強制用戶返回https://secure.example.com

謝謝

代理處理ssl終止的常用技術是添加X-Forwarded-Proto標頭。 然后,上游應用程序可以在進入安全區域時有條件地重定向。

使用nginx可以使用map來完成:

map $http_x_forwarded_proto $insecure {
    default 1;
    https   0;
}

server {
    ...
    if ($insecure) {
        return 301 https://$host$request_uri;
    }
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM