我在谷歌应用引擎上设置了两个非常简单的服务(在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 .
答案 0 :(得分:2)
是的,应该是可能的。我实际上并没有使用2个不同的顶级域名,但是开发控制台似乎已准备好接受第二个域名(我实际上无法检查,因为我没有第二个域名)。按照Adding a custom domain for your application程序进行操作。
要特别注意Wildcard mappings部分 - 由于您的foo.com
域已在使用子域,因此您无法在这些子域上/上使用通配符,您必须指定所需的子域名。
该过程仅将(子)域映射到整个应用程序,而不是单个服务/模块。您还必须使用dispatch file将特定子域路由到相应的模块/服务。您可以在此处找到示例:https://stackoverflow.com/a/32103486/4495081和https://stackoverflow.com/a/34111170/4495081(最后一个示例允许模块在appspot.com
和本地开发服务器上使用自定义域。)
答案 1 :(得分:1)
我按照答案中的链接开始工作。我的调度文件看起来像这样:
dispatch:
- url: "foo.com/*"
module: foo
- url: "*.foo.com/*"
module: foo