我对以下设置有疑问。
我在www.example.org上有一个网站。我希望将web.config重定向到301:
我在web.config中具有以下规则:
<input type="text" id="date">
我的问题是HTTPS规则导致无限循环。 我的理论是,这取决于负载均衡器。我正在“站点”(/服务器)级别重定向,它循环回到负载均衡器,一切都在进行“有点卡卡” :)
任何人都可以建议如何/是否可以在Google Compute Engine的负载均衡器级别上强制实施HTTPS?!
我没有足够的能力在控制台上执行操作(如果可以的话),所以任何帮助将不胜感激。
答案 0 :(得分:0)
当前在负载均衡器级别上是不可能的。您必须在实例级别执行此操作。
您将要利用每个请求的用户代理/ X-Forwarded-Proto标头来确定是否需要执行重定向。用户代理必须确定发送方是否为运行状况检查程序(在这种情况下,不需要重定向),并且X-Forwarded-Proto标头对于确定客户端用来发出请求的协议是必需的。简化的请求流程如下所示:
Client (http or https) -> LB -> Instance (http)
对于每个实例,您都需要这样的东西(对不起,我不知道asp)来处理重定向:
server {
listen 80;
server_name _;
if ($http_user_agent ~ "GoogleHC") {
set $foo "foo";
}
if ($http_x_forwarded_proto != "https") {
set $foobar "${foo}bar";
}
if ($foobar = "bar") {
return 301 https://$host$request_uri;
}
location / {
proxy_pass http://localhost:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
上面的nginx配置文件侦听80。如果发件人是运行状况检查器,则该请求将被代理到8080(或运行Web服务器/ api的任何地方)。但是,如果用户代理不是运行状况检查器,则我们询问客户端使用哪种协议来达到负载均衡器。如果使用了http,则会将用户重定向到https,否则我们会让他们通过。
当然,这只有在其他所有设置都正确的情况下才有效(为简便起见,我假设是这样)。
我有一个脚本,该脚本可以为我的其余api拆除/创建跨区域负载均衡器。我知道您的设置会有所不同,但是希望以下脚本日志可以帮助您了解基础知识。