在Google Compute Engine上使用HTTP(S)负载平衡器时,将所有HTTP流量重定向到HTTPS


18

我在Google Compute Engine上使用2个全局转发规则(HTTP和HTTPS)设置了HTTP / HTTPS负载平衡。每个规则都指向具有HTTP协议的后端服务。

我希望所有请求http://*都去https://*

当负载平衡器通过HTTP与后端服务通信时,我认为我无法在后端服务上获得nginx来发回a 301

我已经尝试了12项关于Google Computing的细微调整,但最终都以google computing返回a为结尾502

我敢肯定有人设置过这个。朝正确方向的任何提示或指示,将不胜感激。


HTTP / HTTPS负载平衡器当前不支持HTTP到HTTPS重定向(使用SSL)。重定向需要在您的Web服务器(apache,nginx等)上进行配置。话虽如此,请立即在Compute Engine公共问题跟踪器(code.google.com/p/google-compute-engine/issues/list)上提交功能请求。
Faizan 2015年


好的,我已经将功能请求转发给了工程部门。
赞2015年

@Faizan-该功能可用时有时间表吗?要求该功能已有2年了。解决方法很麻烦。
talonx

此请求的新链接为issuetracker.google.com/issues/35904733(尽管旧的链接仍会重定向)。
丹尼尔·康普顿

Answers:


19

我们使用HTTP / HTTPS负载平衡器进行了类似的设置,并设法强制使用HTTPS。它不可能直接从负载均衡器中获得,但可以从后端服务中进行设置。Google Cloud负载平衡器会将X-Forwarded-Proto http标头设置为http或https。您在后端服务中检查此标头(在我们的示例中为Varnish,但也可以在Nginx中完成),如果该值为http,则发送回301。


8
谢谢!为了后代: if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }
瑞安·莱基

您应该使用HTTP 426升级标头,而不要使用301。阅读更多: stackoverflow.com/questions/17873247/...
维克拉姆·蒂瓦里

3
我不同意Vikram,您必须将301用于SEO。如果返回4xx家族代码,则您的pagerank不会从指向旧http的链接流到https。301是预期的代码,至少在您关心站点上的SEO时是如此。
cyrrill

1
@VikramTiwari,该帖子的答案实际上指出:“甚至根本不涉及从http://升级到https://”
Rambatino,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.