我有一个 google cloud run 应用程序需要连接到我的客户域,为此,我在 VM 实例上使用 Traefik 反向代理来处理连接和 SSL 终止。
我的问题是使用反向代理时,cloud run 会抛出一个带有 404 错误的 google 页面。使用 cloud run URL 一切正常。
这是迄今为止我的 Traefik 动态配置:
[http]
[http.routers]
[http.routers.router0]
rule = "PathPrefix(`/`)"
service = "webei"
entrypoints = ["http"]
[http.routers.router1]
rule = "PathPrefix(`/`)"
service = "webei"
entrypoints = ["https"]
[http.routers.router1.tls]
certResolver = "subdomainCertResolver"
[http.services]
# Define how to reach an existing service on our infrastructure
[http.services.webei.loadBalancer]
[[http.services.webei.loadBalancer.servers]]
url = "https://my-cloud-run-url"
答案1
尝试了不同的解决方案后,我让它与 Nginx 一起工作,并发现问题出在主机头中。
默认情况下,Traefik 使用原始请求中的 Host,但是,如果此 Host 与 Google Cloud Run 不匹配,则找不到该应用程序。
为了解决这个问题,我只需在 Traefik 动态配置中将passHostHeader
值设置为。false
[http.services.myservice.loadBalancer]
passHostHeader = false
[[http.services.webei.myservice.servers]]