【问题标题】:App Engine - subdomain pointing to particular serviceApp Engine - 指向特定服务的子域
【发布时间】:2018-02-06 07:58:04
【问题描述】:

我在 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

【问题讨论】:

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


    【解决方案1】:

    请注意,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?

    【讨论】:

      【解决方案2】:

      其实答案很简单:你只需要映射一个通配符子域,GAE就会使用前缀对应的服务。

      【讨论】:

      • 能否分享一下GAE中的具体设置?
      【解决方案3】:

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

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

      第 1 步:设置本地环境

      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 服务

      【讨论】:

        猜你喜欢
        • 2018-04-20
        • 2011-07-10
        • 2019-08-29
        • 1970-01-01
        • 1970-01-01
        • 2018-09-03
        • 1970-01-01
        • 1970-01-01
        • 2015-12-18
        相关资源
        最近更新 更多