我可以在Google应用引擎服务中指定域名吗?

时间:2016-11-22 04:15:27

标签: google-app-engine dns

我在谷歌应用引擎上设置了两个非常简单的服务(在python中)。我有一个网站作为defualt项目的example服务已经有一段时间了,我刚刚部署了另一项服务,我们称之为foo。我有dns转发工作的默认服务,所以我可以转到example.com(我在这个假设的情况下拥有)并看到我的默认服务。我也可以转到foo.example.appspot.com并查看我的foo服务,该服务适用于网址。

我还注册了另一个域名,让我们称之为foo.com。我想要的是foo.com使用我的foo.example.appspot.com服务。为了使事情变得更棘手,foo.com有一堆自己的子域名,所以我需要x.foo.com去我的foo服务(甚至x.y.foo.com 1}}是理想的,但如果这很难,我可以很容易地解决那个问题,只需替换掉另一个字符,这样就可以x-y.foo.com或沿着那些线条进行处理。)

我是网络开发人员的新手(对于这个简单的项目,这实际上是一个慷慨的描述),但是我花了一段时间阅读和谷歌搜索并没有找到解决方案,所以任何建议都会有所帮助。我的最后一招是un-service-ify(如果你愿意)这两个服务,只需将它们全部捆绑到一个大的main.py中,根据域的不同路由,然后将两个域指向{ {1}}服务。最大的缺点是我已经拥有了所有与服务相关的东西(这似乎是一种更好的方法)。

我希望得到的用户非常少,因此缩放并不是一个真正的问题(虽然它总是很有趣)。

编辑:

尝试创建default文件来解决此问题,如下所示:

dispatch.yaml

但是当我运行dispatch: - url: "foo.com" module: foo - url: "*.foo.com" module: foo 时,它说

appcfg.py -A <project_id_here> update_dispatch .

2 个答案:

答案 0 :(得分:2)

是的,应该是可能的。我实际上并没有使用2个不同的顶级域名,但是开发控制台似乎已准备好接受第二个域名(我实际上无法检查,因为我没有第二个域名)。按照Adding a custom domain for your application程序进行操作。

要特别注意Wildcard mappings部分 - 由于您的foo.com域已在使用子域,因此您无法在这些子域上/上使用通配符,您必须指定所需的子域名。

该过程仅将(子)域映射到整个应用程序,而不是单个服务/模块。您还必须使用dispatch file将特定子域路由到相应的模块/服务。您可以在此处找到示例:https://stackoverflow.com/a/32103486/4495081https://stackoverflow.com/a/34111170/4495081(最后一个示例允许模块在appspot.com和本地开发服务器上使用自定义域。)

答案 1 :(得分:1)

我按照答案中的链接开始工作。我的调度文件看起来像这样:

dispatch:

  - url: "foo.com/*"
    module: foo

  - url: "*.foo.com/*"
    module: foo