谷歌HTTP负载均衡强制使用HTTPS

5

我在Google Cloud上有一个HTTP和HTTPS负载均衡器。是否可能将其设置为强制(重定向)所有连接到HTTPS?


请参考http://serverfault.com/questions/733166/redirect-all-http-traffic-to-https-when-using-the-https-load-balancer-on-googl。在您的后端服务中检查`X-Forwarded-Proto = 'http'`头,并执行301重定向到https。 - Michael
2个回答

4
截至2015年6月,负载均衡器上还没有这个功能。作为替代方案,您可以配置您的Web服务器,使其对所有HTTP请求返回301,重定向到HTTPS版本。对于Apache(来自https://wiki.apache.org/httpd/RedirectSSL):
NameVirtualHost *:80
<VirtualHost *:80>
   ServerName www.example.com
   Redirect permanent / https://www.example.com/
</VirtualHost>

<VirtualHost _default_:443>
   ServerName www.example.com
   DocumentRoot /my/document/root
   SSLEngine On
   # .. etc .
</VirtualHost>

对于nginx(来自https://serverfault.com/questions/67316/in-nginx-how-can-i-rewrite-all-http-requests-to-https-while-maintaining-sub-dom):

server {
    listen [::]:80;
    return 301 https://$host$request_uri; 
}

谢谢。这正是我已经做的,但我真的希望lb可以替我完成。我希望Google增加这个功能。 - Upio
你是否在HTTP负载均衡器的默认健康检查中遇到任何问题?我使用了类似的nginx配置设置,但是健康检查失败,因此当尝试通过负载均衡器访问我的站点时,会出现502服务器错误。如果我直接访问虚拟机,则可以正确重定向到http,因此我大约有99%的把握这不是nginx配置问题。 - Grant Trevor
我有类似的设置,但遇到了不同的问题。当我访问http://...时,我看到: 您的浏览器发送了一个请求,但该服务器无法理解。 原因:您正在使用普通HTTP协议访问启用SSL的服务器端口。 请改用HTTPS协议访问此URL。看起来像是谷歌负载均衡器“捕获”了301并将http请求重定向到我的https终点。有人有解决方法吗? - Karel Jakubec
这是否需要负载均衡器有两个后端,一个是HTTP后端,一个是HTTPS后端?我的当前配置只有HTTPS后端,而且我的应用程序本身认为所有请求都已经是HTTPS,即使浏览器中的URL是HTTP。 - santiago arizti

-3
为什么要重定向呢?你可以轻松地创建新的(SSL)全局转发规则,并将其指向你的后端服务。
例如,http://107.178.251.37/ 指向我的 HTTP 后端,我还添加了另一个全局转发规则,使其成为 SSL:https://107.178.240.233/

4
因为我不想允许纯 http 连接。你所描述的设置已经是我所拥有的,但我希望客户端被重定向到 https。我可以从我的服务器上完成这个操作,但我希望负载均衡器可以为我处理这个问题。 - Upio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接