使用带有两个IP的Google Cloud Load Balancer重定向到HTTPS

时间:2017-08-30 08:40:32

标签: redirect load-balancing google-compute-engine gcloud

我正在尝试使用Google负载均衡器设置HTTPS。我创建了实例组,前端,后端,运行状况检查器和实际的负载均衡器。 我在端口80上为HTTP设置了两个前端,在端口443上设置了HTTPS。它们分别具有不同的IP-。

然后我将DNS指向我的IP的HTTPS(443)版本。

当我将浏览器直接指向https://example.com

时,效果很好

但是,当我使用非安全协议时,我想将用户重定向到安全连接。经过一些阅读,我了解到,唯一的方法是直接从我的node.js应用程序(或nginx)。我所做的是检查req.headers['x-forwarded-proto']是否为false并重定向到'https://' + global.config.hostname + req.url

global.config.hostname设置为example.com

primoz@static-server[master]$ wget http://example.com
--2017-08-30 10:13:12--  http://example.com/
Resolving example.com... 35.196.241.151
Connecting to example.com|35.196.241.151|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2017-08-30 10:13:12 ERROR 404: Not Found.

35.196.241.151是我的负载均衡器设置侦听端口443的HTTPS IP示例。

在我看来,重定向试图通过端口80访问我的安全HTTPS IP并且无法访问。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:5)

这是我发现的。

这是很多人常见的问题,看看这个问题主题,人们要求更简单的方法来设置它。

https://issuetracker.google.com/issues/35904733

我通过设置静态IP而不是HTTP和HTTPS前端的临时IP来修复此问题。通过这种方式,它们都具有相同的IP,并且节点应用程序或nginx中的重定向可以正常工作。