带服务的 App Engine 自定义域

App Engine custom domain with service

按照 DNS 记录上的说明,我 set up a custom domain 使用 App Engine:

https://cloud.google.com/appengine/docs/standard/java/mapping-custom-domains

它正在为使用 URL 的默认服务工作 http://MY_CUSTOM_DOMAIN but I'm unable to access other services with URLs http://SERVICE_ID.MY_CUSTOM_DOMAIN。我需要映射一组不同的 DNS 记录吗?

在 GCP 文档 here 中查看如何使用子域以及通配符映射的工作原理(实际上,这些是您关注并链接的网站上的后续步骤)。请确保您的 DNS 提供商允许在 CNAME 主机条目中使用通配符,否则将无法进行此类映射。

This blog post 显示了 real-life 使用 App Engine 将子域与服务匹配的示例。

这里是 step-by-step:

  1. 确保您是此处父域的所有者:https://www.google.com/webmasters/verification/home(例如,对于 subdomain.example.com,您需要拥有 example.com) 如果没有,请朋友将您添加为所有者。
  2. 创建一个 CNAME 记录指向:ghs.googlehosted.com(在 Cloud DNS 或任何地方)。 注意:这会导致停机,但是App Engine需要创建SSL证书所以停机是不可避免的...
  3. 将自定义域添加到 App Engine
    1. 转到App Engine -> Settings -> Custom Domains
    2. 点击Add a custom domain
    3. 选择已验证的父域并单击 Continue
    4. 输入子域名(例如subdomain.example.com)并点击Save mappings
    5. 单击 Done(您已经执行了最后一步)
  4. 更新 App Engine 调度规则
    1. 运行 gcloud app describe --project <GOOGLE_CLOUD_PROJECT_ID> 并查看 dispatchRules
    2. 的当前部分
    3. 使用您的新规则以及上面已有的规则创建 dispatch.yamldispatch.yml 文件(注意文件格式与命令输出不同)
    dispatch:
      - url: <DOMAIN>/* # e.g. subdomain.example.com/*
        service: <SERVICE-NAME>
    
    1. 使用以下方式部署它:gcloud app deploy dispatch.yaml --project <GOOGLE_CLOUD_PROJECT_ID>