2016-11-22 41 views
2

我有两个非常简单的服务设置(在Python中)在谷歌应用程序引擎。我有一个网站已经上涨了一段时间,作为我的example项目的defualt服务,并且我刚部署了另一项服务,我们称之为foo。我有DNS转发工作的默认服务,所以我可以去example.com(我在这个假设的情况下拥有),看到我的默认服务。我也可以去foo.example.appspot.com并查看我的foo服务,该服务在url上运行。我可以在Google应用引擎服务中指向一个域名吗?

我还注册了另一个域名,我们称之为foo.com。我想要的是foo.com使用我的foo.example.appspot.com服务。为了使事情变得更加棘手,foo.com有一堆它自己的子域,所以我需要x.foo.com去我的foo服务以及(即使x.y.foo.com将是理想的,但如果这很难,我可以很容易地解决这个问题通过替换另一个字符,所以它将是x-y.foo.com或沿着这些线)。

我对web开发人员很新颖(对于这个简单的项目来说,这真的是一个慷慨的描述),但是Iv'e花了一段时间阅读和谷歌搜索,并没有找到解决方案,所以任何建议都会很有帮助。我最后的办法是将这两项服务取消服务,然后将其全部捆绑到一个大的main.py中,根据域名的不同路由,然后将这两个域指向default服务。这样做的一大缺点是我已经拥有了一切与服务相关的东西(这似乎是一种更好的方法)。

我希望获得很少的用户,所以缩放并不是真正的问题(尽管了解它总是很有趣)。

编辑:

试图创建dispatch.yaml文件来解决这个问题如下:

dispatch: 

    - url: "foo.com" 
    module: foo 

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

但是当我运行appcfg.py -A <project_id_here> update_dispatch .它说

Error parsing yaml file: 
Unable to assign value 'foo.com' to attribute 'url': 
invalid url 'foo.com' 
    in "./dispatch.yaml", line 3, column 10 

回答

1

是的,它应该是可能。我实际上并没有使用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和本地开发服务器上)。

+0

感谢提示,调度文件看起来像我想要的,但我无法设置我想要的映射(请参阅我的编辑上面)。我也尝试使用'“foo。编辑:对不起,坚持秒,我认为第二个链接可能有我需要的 – stokastic

+0

nope,我不能找到一个例子,将第二个完整的域“foo.com”路由到服务 – stokastic

1

我明白了下面的答案中的链接。我的调度文件看起来像这样:

dispatch: 

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

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

感谢您确认我的理论,即多个顶级域可以映射到单个应用程序:) –

相关问题