我目前有一个托管在 Google Compute Engine 上的网站,该网站通过位于负载均衡器后面的 Identity-Aware-Proxy 进行了身份验证。这一切都适用于 https,但我想确保 http 重定向到 https,因为它目前只响应 404。
因此,我遵循了https://cloud.google.com/load-balancing/docs/https/setting-up-http-https-redirect,它告诉您设置第二个负载均衡器以将 http 流量重定向到 https。
但是,问题是,按照这些说明操作后,当我浏览到http://my-website.com时,我收到以下错误:
错误 403(禁止)!!1
- 那是一个错误。
您的客户端无权从此服务器获取 URL /。我们知道的就这些。
尽管 http 负载均衡器设置了 301 - 永久移动完整路径重定向,但在浏览器开发人员工具网络选项卡中没有发生重定向。它只是立即以 403 响应。URL 也使用 http:// 方案。
总而言之,我的设置如下所示:
外部 HTTPS 负载均衡器
- 前端 - HTTPS、静态 IP、仅限 HTTPS
- 后端 - Identity-Aware-Proxy(通过 Identity Platform 进行电子邮件身份验证)-> Compute Engine 实例组
外部 HTTP 负载均衡器
- 前端 - HTTP,静态 IP(与上面的 HTTPS 负载均衡器相同)
- 后端 - 无
- 主机和路径规则:
- 模式:高级主机和路径规则(URL 重定向、URL 重写)
- 行动:将客户端重定向到不同的主机/路径
- 主机重定向: https ://my-website.com
- 路径值: *
- 重定向响应代码: 301 - 永久移动
- HTTPS 重定向:已启用
任何想法如何解决这个问题,而不是得到 403 将不胜感激!
您描述的方式看起来像是 url-map 有问题,因为您可以访问
http
您网站的版本。绝对确定使用命令仔细检查(或创建新的)url-map
gcloud
:准备好 URL 映射后,创建一个目标代理:
结果:
和转发规则:
wchich 应该看起来像:
确保为 HTTP 和 HTTPS LB 使用相同的公共 IP。如果传入流量没有被阻止,请检查防火墙规则。
如果你做的一切都是正确的,你应该得到与
curl
示例中相同的输出。