[英]Defining correctly Nginx server block for two django apps and no server_name
[英]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.