云 运行 http 到 https 重定向

Cloud Run http to https redirection

在这个页面上写着

Cloud Run (fully managed) redirects all HTTP requests to HTTPS but terminates TLS before they reach your web service.

terminates TLS before they reach the web service不太明白什么意思。 web服务是指容器中的web应用?

我部署了一个云 运行,使用无服务器 NEG 设置了一个负载均衡器。

http://example.comreturns一个404.
https://example.com returns一个200.

重定向从哪一点开始?它不会自动重定向。

我只设法在应用程序级别重定向它。

云 运行 重定向如何工作?

根据关于“使用 HTTPS 请求调用”的文档 [1];完全托管的云 运行(CR) 将所有 HTTP 请求重定向到 HTTPS,但在它到达您的 Web 服务之前终止 TLS。

如果您的服务生成的 Web 资源引用其他具有不安全 URLs (http://) 的 Web 资源,您的页面可能会出现“混合内容警告或错误 [2]”。

我尝试使用快速入门:构建和部署 [3] 重现您的问题,但我无法重现,因为我的 URL 显示 HTTPS。

您的服务是否生成引用其他 URL 不安全 Web 资源的 Web 资源?

[1] https://cloud.google.com/run/docs/triggering/https-request

[2]https://web.dev/what-is-mixed-content/

[3]https://cloud.google.com/run/docs/quickstarts#build-and-deploy

云 运行 有自己的负载平衡器。所以,当你调用你的服务时,你有

Sender -----> Cloud Run LB -----> Container instance

如果您向 Cloud 运行 LB 发送 HTTP 请求,您将被重定向到 HTTPS。

在您的上下文中,您使用了一个额外的层:外部 HTTPS 负载平衡器(也称为 GCLB),并且您拥有这条链

Sender ------> GCLB -----> Cloud Run LB -----> Container instance

您在 HTTP 中收到 404,因为 GCLB 未配置为执行重定向。不仅如此,你的GCLB只监听443端口(前端配置)而你没有打开80端口

您可以通过关注this documentation进行更新。最后,这不是云 运行 问题,只是负载均衡器问题。