将自定义子域映射到App Engine上的特定版本

时间:2018-10-01 14:28:35

标签: google-app-engine custom-domain

此页面(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项目提供以下服务:

enter image description here

以及此服务的以下版本:

enter image description here

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

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

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

URL https://test1-dot-MY_PROJECT_ID.appspot.com/可以正常工作(即提供"test1"版本)。

这些是我配置的域:

enter image description here

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

1 个答案:

答案 0 :(得分:2)

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

要为具有自定义域的已命名GAE版本提供服务,您需要使用通配符(*.mycustomdomain.com)映射该域,并删除与您的版本冲突的其他映射子域。有效的映射域的示例为:

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

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


修改

关于通配符映射和HTTPS

GCP documentation about wildcard mapping指出:

  

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

这可能导致人们认为通配符映射不支持HTTPS。该文档引用了managed certificates that GAE provides。如果您使用自己的SSL证书,则App Engine会执行support SSL certificates for wildcards

  

某些App Engine功能使用special subdomains。例如,应用程序可以使用子域来寻址应用程序服务,或寻址不同版本的应用程序。要将它们与SSL一起使用,则有必要设置SAN或通配符证书。通配符证书仅支持一级子域。