我正在尝试使用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并且无法访问。
我在这里缺少什么?
答案 0 :(得分:5)
这是我发现的。
这是很多人常见的问题,看看这个问题主题,人们要求更简单的方法来设置它。
https://issuetracker.google.com/issues/35904733
我通过设置静态IP而不是HTTP和HTTPS前端的临时IP来修复此问题。通过这种方式,它们都具有相同的IP,并且节点应用程序或nginx中的重定向可以正常工作。