google-app-engine - 自定义子域上的 AppEngine“Google 管理的自动续订”SSL 证书错误地路由内容
问题描述
我有一个使用 app id 运行 AppEngine 的 Google Cloud 项目myapp
。我已将此应用程序 ID 映射到自定义域example.com
。我已将默认版本设置myapp
为www
. 它secure: always
适用于我的 app.yaml 中的所有处理程序。此设置用于将 HTTP 流量重定向到 HTTPS。最后,我为www.example.com
. 对于这些路由中的每一个,我都允许 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 提供?
解决方案
根据自定义域文档:
输入
*.example.com
会将 example.com 的所有子域映射到您的应用程序。
这意味着您必须手动处理dispatch.yaml
文件中的映射。
在你的情况下,你会想要这样的东西:
dispatch:
- url: "alpha.example.com/"
service: alpha
- url: "*.example.com/"
service: default
请注意规则的顺序,因为请求将根据url
匹配的第一个模式进行路由。
有关 GAE 标准如何路由请求的更深入的说明,请查看如何路由请求文档。
要将请求重定向到https
应用程序的版本,请继续secure
在您的app.yaml
.
推荐阅读
- postgresql - 解决 Postgres.app 中的“找不到二进制文件”错误
- javascript - 我将如何将 mp3 文件打包到 mp4 容器中?
- sql - 设计表时添加逻辑约束
- java - 为什么while语句在do while之后不起作用?
- angular - 如何以编程方式在角度项目中使用引导图标?
- c - 结构变量与内存位置的交互或分配
- javascript - React js @material-ui/core Select 无法读取 null 的属性“offsetWidth”
- javascript - $scope.removeNinja 不是函数
- reactjs - 如果每个屏幕都有不同的 js 文件,如何使用 StackNavigator 在屏幕之间导航?
- reactjs - 无法重新声明块范围变量“BlogPost”