我们现在已经有了这个问题,它开始在屁股上咬我们了。我们在django框架上为python编写的客户端运行一个站点。然后我们使用nginx作为django的webserver / proxy。这通常是最标准的设置,效果很好。
问题是我们的客户端有更高的另一个apache服务器。该服务器处理ssl终止,并通过普通的http将请求传递给我们。 apache服务器接受2个域名上的http和https。
我们可以在nginx级别轻松地将http重写为https,但问题在于用户可以删除https并使用http。
nginx级别是否有办法强制用户在https://secure.example.com上时强制返回http://secure.example.com。
由于
答案 0 :(得分:0)
通常的技术是代理处理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;
}
...
}