自定义子域上的 AppEngine“Google 管理的自动续订”SSL 证书错误地路由内容
Posted
技术标签:
【中文标题】自定义子域上的 AppEngine“Google 管理的自动续订”SSL 证书错误地路由内容【英文标题】:AppEngine "Google-managed, auto-renewing" SSL Certificates on Custom Subdomain Incorrectly Route Content 【发布时间】:2018-08-07 04:23:19 【问题描述】:我有一个运行 AppEngine 的 Google Cloud 项目,应用 ID 为 myapp
。我已将此应用程序 ID 映射到自定义域 example.com
。我已将myapp
的默认版本设置为www
。它为我的 app.yaml 中的所有处理程序应用了 secure: always
。此设置用于将 HTTP 流量重定向到 HTTPS。最后,我为www.example.com
添加了 CNAME 记录。对于这些路由中的每一个,我都允许 Google 管理和自动更新 SSL 证书。设置面板如下所示:
这很好,因为所有 HTTP 请求都被路由到它们对应的 HTTPS 端点。
几天前,我被要求制作一个新版本的应用程序alpha
,并希望将其路由到https://alpha.example.com
。就像我设置的www
版本secure: always
为备用协议强制执行 HTTPS 重定向。我还为 alpha.example.com 添加了 CNAME 记录,并向其中添加了“Google 管理的自动续订”证书。 http://alpha.example.com
正确重定向到 https://alpha.example.com
但是,https://alpha.example.com
提供我的应用程序的默认版本 www
而不是我的新版本 alpha
。 App Engine 自定义域仪表板中的新设置如下所示:
如何确保http(s)?://(www)?.example.com
服务于版本www
、http(s)?://alpha.example.com
服务于版本alpha
,并确保所有内容都通过https 提供?
【问题讨论】:
这最初是发布的,但在 ServerFault 上被搁置。我被要求在其他地方发帖,因为那里没有话题。原链接可以找到here 【参考方案1】:根据custom domain docs:
输入
*.example.com
会将 example.com 的所有子域映射到您的应用。
这意味着您必须手动处理 dispatch.yaml
文件中的映射。
在你的情况下,你会想要这样的东西:
dispatch:
- url: "alpha.example.com/"
service: alpha
- url: "*.example.com/"
service: default
请注意规则的顺序,因为请求将根据匹配的第一个 url
模式进行路由。
有关 GAE 标准如何路由请求的更深入说明,请查看How Requests are Routed 文档。
要保持请求被重定向到应用程序的https
版本,请继续在app.yaml
中使用secure
指令。
【讨论】:
非常感谢!我不知道 dispatch.yaml。我会试一试。 抱歉耽搁了,但这完全解决了问题!谢谢!以上是关于自定义子域上的 AppEngine“Google 管理的自动续订”SSL 证书错误地路由内容的主要内容,如果未能解决你的问题,请参考以下文章
AppEngine 开发服务器上的 Google KMS - 日志混乱