App Engine - 指向特定服务的子域

时间:2017-08-29 01:12:48

标签: google-app-engine dns subdomain gae-module

我在App Engine应用程序中注册了两个子域:

  • service-a.my-app.com
  • service-b.my-app.com

我已在服务器上添加了所有记录(CNAME,A)。

我的GAE中有三项服务:

  • 默认
  • 服务-A
  • 服务-B

我希望每个子域都指向正确的服务。但是,每次访问它们时,都只使用默认服务。

旁注:GAE正在为laravel 5.4和我的dispatch.yaml运行一个灵活的环境(位于默认服务中如下:

dispatch:
-url: "service-a.my-app.com/*"
 service: service-a
-url: "service-b.my-app.com/*"
 service: service-b

3 个答案:

答案 0 :(得分:0)

请注意dispatch.yaml是应用级配置,而非服务级配置,偶尔更新包含它的服务并不会自动更新应用级配置。

您应该使用dispatch.yaml的特定部署命令,从包含文件的目录执行:

  • gcloud app deploy dispatch.yaml如果您正在使用Cloud SDK
  • appcfg.py update_dispatch .如果您仍在使用GAE SDK

另见dispatch.yaml not getting updated

对于其他应用级.yaml配置文件也是如此,这可能是每个配置文件都有自己的更新/部署命令的原因之一(并且还允许独立于任何特定应用服务部署它们)。以某种方式相关:Why do I need to deploy a "default" app before I can deploy multiple services in GCP?

答案 1 :(得分:0)

实际上答案非常简单:您只需要映射一个通配符子域,GAE就可以使用与前缀对应的服务。

答案 2 :(得分:0)

这对我有用。希望这对某人有帮助。

GAE标准: 我有一个角度项目,它将为除一个子域“ api”之外的任何子域加载。 后端是用Go编写的,所有服务都在名为“ api”的服务下

STEP1:设置本地环境

Angular项目具有以下app.yaml

runtime: python27
api_version: 1
instance_class: F1
handlers:
- url: /
  static_files: default/index.html
  upload: default/index.html
- url: /
  static_dir: default 

我的service.yaml文件位于单独的目录中,并且具有以下内容

runtime: go
api_version: go1
instance_class: F1
service: api
handlers:
- url: /.*
  script: _go_app
  secure: always

我的dispatch.yaml具有以下内容

dispatch:
- url: "api.MYDOMAINNAME.com/*"
  service: api
//Add more subdomain : services mapping here

我使用gcloud app deploy命令部署了所有这些文件

第2步-在GAE中配置自定义域。

在GAE控制台中,转到Project Settings > Custom Domains

  1. 添加您的域
  2. 使用Google提供的方法之一验证您的域。
  3. 更新您的域服务提供商的DNS设置中的CNAME,A和AAA记录

第3步-配置子域

添加子域api.MYDOMAINNAME.com

在域服务提供商的设置中添加CNAME。 //如果需要,添加更多子域

添加通配符子域*.MYDOMAINNAME.com

在域名服务提供商的设置中添加CNAME,以将*重定向到google。

最后:

等待几分钟以应用设置。

现在,您的应用程序会将MYDOMAINNAME.com, www.MYDOMAINNAME.com , *.MYDOMAINNAME.com重定向到Angular代码

api.MYDOMAINNAME.com到您的api服务