重定向至使用带有两个IP的谷歌云负载均衡器的HTTPS



我正试图在谷歌负载均衡器的帮助下设置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是我的负载平衡器设置的HTTPS IP在端口443上侦听的示例。

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

我在这里错过了什么?

这就是我发现的。

这是很多人都会遇到的一个常见问题,看看这个问题线索,人们正在请求一种更简单的方法来设置它。

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

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

最新更新