使用具有两个 IP 的 Google Cloud Load Balancer 重定向到 HTTPS
Redirect to HTTPS using Google Cloud Load Balancer with two IP-s
我正在尝试在 Google 负载平衡器的帮助下设置 HTTPS。我创建了实例组、前端、后端、健康检查器和实际的负载均衡器。
我设置了两个前端,一个用于端口 80 上的 HTTP 和端口 443 上的 HTTPS。它们分别具有不同的 IP-s。
然后我将我的 DNS 指向我 IP 的 HTTPS (443) 版本。
当我将浏览器直接指向 https://example.com
时效果很好
但是,当我使用非安全协议时,我想将用户重定向到安全连接。阅读之后,我了解到唯一的方法是直接从我的 node.js 应用程序(或 nginx)中执行此操作。我所做的是检查 req.headers['x-forwarded-proto']
是否为假并重定向到 '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 中的重定向可以正常工作。
我正在尝试在 Google 负载平衡器的帮助下设置 HTTPS。我创建了实例组、前端、后端、健康检查器和实际的负载均衡器。 我设置了两个前端,一个用于端口 80 上的 HTTP 和端口 443 上的 HTTPS。它们分别具有不同的 IP-s。
然后我将我的 DNS 指向我 IP 的 HTTPS (443) 版本。
当我将浏览器直接指向 https://example.com
时效果很好但是,当我使用非安全协议时,我想将用户重定向到安全连接。阅读之后,我了解到唯一的方法是直接从我的 node.js 应用程序(或 nginx)中执行此操作。我所做的是检查 req.headers['x-forwarded-proto']
是否为假并重定向到 '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 中的重定向可以正常工作。