【问题标题】:Url for routing to specifc version with SSL and custom domain on app engine用于在应用引擎上使用 SSL 和自定义域路由到特定版本的 URL
【发布时间】:2016-03-31 00:26:31
【问题描述】:

是否有一个 url 模式默认使用应用引擎上的自定义域和 SSL 将流量路由到特定版本,而不在调度文件中指定路由? IE。像

https://themagic.mydomain.com

themagic 可能包含点、破折号——不管它需要什么?

docs 指定了各种选项,但没有一个既是 SSL 又是 mydomain.com,它们是:

https://instance-dot-version-dot-module-dot-app-id.appspot.com http://instance.version.module.app-id.my-custom-domain.com 将请求发送到指定的模块、版本和实例。

https://version-dot-module-dot-app-id.appspot.com http://version.module.app-id.my-custom-domain.com 将请求发送到指定模块和版本的可用实例。 这些地址形式具有默认的路由行为。请注意,如果调度文件中有匹配的模式,则默认路由将被覆盖:

https://module-dot-app-id.appspot.com http://module.app-id.my-custom-domain.com 将请求发送到指定模块的默认版本的可用实例。

https://version-dot-app-id.appspot.com http://version.app-id.my-custom-domain.com 将请求发送到给定版本的默认模块的可用实例。

https://app-id.appspot.com http://app-id.my-custom-domain.com 将请求发送到默认模块的默认版本的可用实例。

多年来我一直在使用路由

https://version1.www.mydomain.com

这在历史上可以很好地将流量路由到默认模块上名为 version1 的版本,并且可以继续工作。但我对此感到不舒服,因为 a) 它没有记录(据我所知) b) 设置 SSL 很棘手。特别是在 SSL 上,唯一的方法(据我所知)是使用通配符 SSL 证书(价格昂贵或自签名)。我尝试将此 URL 与仅签名为 version1.www.mydomain.com 的 SSL 证书一起使用导致流量被路由到默认版本,这可能是因为需要通过 appengine 的 Web UI(云控制台)添加特定的“自定义域”规则为了添加 SSL 证书。所以现在,一个自签名的通配符证书是我让它工作的唯一方法。

通过实验,version-www.mydomain.com 似乎也可能是到该版本的有效路由,但同样,是否可以使用 SSL 进行设置仍然存在疑问,并且没有关于它的文档。

如果可能,请链接到文档。

【问题讨论】:

    标签: google-app-engine ssl


    【解决方案1】:

    更新答案

    看起来,虽然这按预期工作,但这不是软路由的情况,而是在最初链接的同一文档页面上的其他地方描述的 subdomain -> version / module 路由。在此评论交换发生时,文档中显示的子域的形式存在问题,应尽快修复,以便更清晰易读。

    https://module-dot-app-id.appspot.com
    http://module.app-id.my-custom-domain.com
    

    应该变成:

    http(s)://module-dot-appid.appspot.com
    OR
    http(s)://module.appid.appspot.com
    OR
    http(s)://module.custom-domain.com
    

    或等价物。

    原答案

    您链接的documentation 充分描述了路由规则。您在默认模块路由方面观察到的是文档描述的“软路由”的一个示例。模块和版本的显式寻址需要采用文档要求的形式,否则请求将转到默认模块。

    【讨论】:

    • 感谢您的回答。抱歉,我的问题不清楚(希望现在澄清)。我有version1.www.mydomain.com 将流量路由到version1 - 即该 url 按我的意愿路由,但它没有记录,并且设置 SSL 很痛苦。您链接到的软路由规则说:a)“如果请求匹配 app-id.appspot..”(此 url 不匹配)和 b)“软路由不适用于自定义域”,这就是我们'正在处理这里。所以我认为不幸的是,软路由规则并没有澄清这一点。
    • 开发者控制台的App Engine > Settings > Custom Domains 部分有什么内容?你选择www. 还是裸域?一种选择是为裸域设置它,并使用调度规则将 www 路由到默认模块,而解析为版本或模块的其他子域将正确路由,您只需要一个单独嵌套的通配符(*.mydomain.com)。
    • 我有 3 个条目:1) mydomain.com,来自我的 LetsEncrypt 证书的 SSL 支持,一堆 A 和 AAAA 记录,没有别名。 2) www.mydomain.com,来自我的 LetsEncrypt 证书的 SSL 支持,一个 cname 记录和别名“www”。 3) *.www.mydomain.com 具有来自我的自签名证书、一个 cname 记录和别名“*.www”的 SSL 支持。我尝试为该域设置 version1.www.mydomain.com 和 SSL 证书,这就是导致流量路由到默认版本的原因。无论哪种方式,文档似乎都说 version1.www.mydomain.com 将路由到默认版本,但它会路由到 version1。
    • 我相信您应该只需要配置您拥有的三个选项之一。解析模块时将考虑以给定模式为前缀的子域。假设您有www.mydomain.com*.www.mydomain.com,前缀version1 应该自然地解析为版本version1。这似乎按预期工作。有什么我错过的吗?
    • 前缀 version1*.www.mydomain.com 将流量路由到 version1。所以这是观察到的行为和我想要的行为,以及(正如你所说的)“预期”。但我只是看不到它记录在哪里(这是我主要关心的问题)。抱歉,我已经阅读了 10 次这些文档,但我没有看到它。请您再次编辑您的问题以引用记录此行为的部分吗?抱歉,如果这看起来很迂腐——我假设如果我在使用这些文档时遇到问题,其他人也可能会遇到问题,所以值得推动完成。如果您认为该假设不正确,请 LMK。
    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    相关资源
    最近更新 更多