4

此页面(https://cloud.google.com/appengine/docs/standard/nodejs/mapping-custom-domains)指出:

使用子域

如果您为自定义域设置通配符子域映射,那么您的应用程序会为任何匹配的子域提供请求。

  • 如果用户浏览与应用程序版本名称或服务名称匹配的域,则应用程序提供该版本。
  • 如果用户浏览与服务名称匹配的域,则应用程序会提供该服务。

此外,此页面 ( https://cloud.google.com/appengine/docs/standard/java/how-requests-are-routed ) 指出:

向服务中特定版本的可用实例发送请求default

https://[VERSION_ID]-dot-[MY_PROJECT_ID].appspot.com

http://[VERSION_ID].[MY_CUSTOM_DOMAIN]


我的 App Engine 项目有以下服务:

在此处输入图像描述

此服务的以下版本:

在此处输入图像描述

"1"是默认版本。"test1"是测试版。

然而,当我在浏览器中输入https://test1.mycustomdomain.com时,它提供的是默认版本,而不是"test1"版本。

如果我在浏览器中输入https://test99.mycustomdomain.com,我会看到一个错误页面,因为此版本不存在(如预期的那样)。

URL https://test1-dot-MY_PROJECT_ID.appspot.com/按预期工作(即提供"test1"版本)。

这些是我配置的域:

在此处输入图像描述

如何让 App Engine 将请求路由到正确的版本?

4

1 回答 1

2

任何直接映射到您的应用程序的域都将提供默认服务。如果test1.mycustomdomain.com映射为自定义域,它将始终服务1(默认)。

要使用自定义域提供命名 GAE 版本,您需要使用通配符 ( *.mycustomdomain.com) 映射域并删除与您的版本冲突的其他映射子域。工作映射域的一个示例是:

  • mycustomdomain.com
  • www.mycustomdomain.com
  • *.mycustomdomain.com

使用该设置,test1.mycustomdomain.com应该提供正确的版本,test1.


编辑

关于通配符映射和HTTPS

关于通配符映射的GCP 文档指出:

注意:托管 SSL 证书不支持通配符映射。

这可能会导致认为通配符映射不支持 HTTPS。该文档是指GAE 提供的托管证书。如果您使用自己的 SSL 证书, App Engine 确实支持通配符的 SSL 证书:

一些 App Engine 功能使用特殊的子域。例如,应用程序可以使用子域来处理应用程序服务,或处理应用程序的不同版本。要将这些与 SSL 一起使用,设置 SAN 或通配符证书是有意义的。通配符证书仅支持一级子域。

于 2018-10-01T15:58:05.100 回答