我希望将2个自定义子域映射到AppEngine应用程序的不同模块,即:
a.my-domain.com -> default module
b.my-domain.com -> module-b
我的dispatch.yaml看起来像这样:
dispatch:
- url: "a.my-domain.com/*"
module: default
- url: "b.my-domain.com/*"
module: module-b
我将这两个子域添加到此应用AppEngine自定义域和CNAME设置正确。
问题是a.my-domain.com和b.my-domain.com都解析为默认模块。
我没有尝试过顶级通配符映射,即* .my-domain.com到这个应用程序,因为我已经将其他子域映射到另一个应用程序。
AppEngine甚至可以设置这个设置吗?
答案 0 :(得分:3)
我设法使用Google Apps进行此类设置。
我猜测来自调用x.my-domain.com
子域名的混淆(我最初遇到了同样的问题) - 它们实际上只是*.my-domain.com
域中的主机。
我在管理控制台的域名菜单中,已将*.my-domain.com
(主要)裸域由Google Apps处理,重定向到www.my-domain.com
。
我将App Engine应用ID添加到管理控制台中的 App Engine应用菜单。然后在该菜单中点击我的应用程序条目,我通过添加 a 为每个主机创建了网址 / 新网址, b 在下拉列表中选择了裸域(不是子域!)。现在我在网址列表中看到了:
警告:在上述步骤输入信息时要小心,因为到目前为止我无法删除/更正网址,我完全按照此处描述的问题(并且昨天调用支持到目前为止没有帮助在我的情况下):App Engine (On Google Apps) Custom Domain can't remove
在安全 - >中管理控制台中的自定义域的SSL 菜单我在5个SNI插槽之一中拥有裸域的通配符SSL证书。我在下拉框中(以及下面的未分配的网址列表中)添加了2个网址,显示为仅限SNI 服务模式。
我的调度文件有点麻烦 - PyCharm没有正确上传,因为我切换到模块,必须手动上传(使用appcfg.py --oauth2 update_dispatch .
)和仅在我加入我的应用程序后其中的名称它变得有效(在旧的GAE Apps console https://appengine.google.com/中显示为主要 - > 调度菜单,不能但是在开发者控制台中找到了一个等价物:
application: myapp
dispatch:
- url: "a.my-domain.com/*"
module: default
- url: "b.my-domain.com/*"
module: module-b
注意:可能需要一段时间才能传播DNS更改(顺便说一下,我在注册时通过Google获取了我的裸域,因此他们可以直接驱动DNS操作,我我自己没有做任何事情) - 在我的情况下,传播时间在5-15分钟范围内。
注意:从我将网址添加到我的SSL证书服务列表之前,还需要几分钟,直到网页开始工作 - 在此期间我收到安全警告(我{{{ 1}}对我的模块的.yaml文件中的所有条目强制执行。
我认为就是这样。
答案 1 :(得分:1)
如果您使用Google Apps配置域名,则似乎无法实现:
使用Google App Engine的应用程序不适用于非主要域的用户[1]。
来自" Google App Engine"在https://support.google.com/a/answer/182081
它也在https://cloud.google.com/appengine/docs/ssl提到:
Google Apps不支持" secondary"适用于您的App Engine应用的域名,如此处所述。您仍然可以将辅助域名与您通过Google Apps提供的其他应用程序一起使用,但您的App Engine应用程序只能通过您帐户的主域名或其别名来访问。
您应该可以在没有Google Apps的情况下配置您的域名,但如果您需要SSL支持,这需要使用Google Apps,我认为没有合适的解决方案。