自定义子域上的AppEngine“由Google管理的自动更新” SSL证书错误地路由了内容

时间:2018-08-07 04:23:20

标签: google-app-engine https

我有一个运行AppEngine且应用程序ID为myapp的Google Cloud项目。我已将此应用程序ID映射到自定义域example.com。我已将myapp的默认版本设置为wwwsecure: always已应用于我app.yaml中的所有处理程序。此设置用于将HTTP通信重定向到HTTPS。最后,我添加了www.example.com的CNAME记录。对于上述每种途径,我都允许Google管理和自动续订SSL证书。设置面板如下所示:

App Engine Domains - Settings Panel

这很棒,因为所有HTTP请求都路由到其相应的HTTPS端点。

几天前,我被要求制作一个新版本的应用alpha,并希望将其路由到https://alpha.example.comwww类似我设置secure: always的版本以对备用协议强制实施HTTPS重定向。我还为alpha.example.com添加了CNAME记录,并向其中添加了“由Google管理的自动更新”证书。 http://alpha.example.com正确地重定向到https://alpha.example.com,但是https://alpha.example.com提供了我的应用程序www的默认版本,而不是我的新版本alpha。新设置在App Engine自定义域信息中心中如下所示:

App Engine Domains - Settings Panel with new Subdomain

我该怎么做才能确保http(s)?://(www)?.example.com服务于www版本,http(s)?://alpha.example.com服务于alpha版本,并确保所有内容都通过https提供?

1 个答案:

答案 0 :(得分: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指令。

相关问题