【问题标题】:GCP: How to force ssl behind an ssl proxy load balancer?GCP:如何在 ssl 代理负载均衡器后面强制使用 ssl?
【发布时间】:2020-07-03 10:02:00
【问题描述】:

我在 Google Cloud 上的 SSL 代理负载平衡器后面有一个 HTTP 后端服务器。

如果客户端在端口 80 上发出 HTTP 请求,负载均衡器会返回 404。 如果可能,我想将端口 80 请求重定向到端口 443。

我的第一个问题是:SSL 代理负载均衡器能否同时监听端口 80 和端口 443,但只终止端口 443 上的 SSL?

如果是这样,我的第二个问题是:后端能否以某种方式确定负载均衡器是否终止了 ssl?

如果我使用 HTTP(S) 负载平衡器,这一切都是微不足道的,我可以查看 X-Forwarded-Proto,但在这种情况下,我们使用的是 tcp 负载平衡器,没有 HTTP 标头,所以我'我想知道同样的事情是否可能以某种方式发生。 PROXY 协议似乎不包含此信息。

也许负载均衡器可以将流量从 80 端口转发到后端的 8080 端口,并将流量从 443 端口转发到后端的 8443 端口,这样我们就知道它来自哪里。 SSL 代理负载均衡器是否支持这样的东西?

在我的情况下,我无法使用 HTTP(S) 负载平衡器,因为我需要禁止 HTTP/2。

我也可以只使用 TCP 代理并在后端处理 SSL 终止,但我想使用 Google 托管证书。

【问题讨论】:

    标签: ssl google-cloud-platform tls1.2 google-cloud-load-balancer


    【解决方案1】:

    我的第一个问题是:SSL 代理负载均衡器能否同时监听两者 端口 80 和端口 443,但只在端口 443 上终止 SSL?

    没有。 SSL 代理负载均衡器不理解第 7 层流量 (HTTP/HTTPS)。

    如果您希望负载均衡器将用户重定向到 HTTPS,那么您需要使用 HTTP(S) 负载均衡器或其他第 7 层负载均衡器。

    由于您想阻止 HTTP/2,您需要创建自己的负载平衡器设置。

    也许负载均衡器可以将流量从端口 80 转发到端口 后端的 8080 和从端口 443 到端口 8443 的流量 后端,所以我们知道它来自哪里。 SSL 代理是否加载 平衡器支持这样的东西吗?

    没有。 SSL 代理负载均衡器支持 TLS 加密流量,不支持未加密流量。端口 80 (HTTP) 通常是未加密的。

    此外,仅支持这些 TCP 端口 25、43、110、143、195、443、465、587、700、993、995、1883 和 5222。

    【讨论】:

    • 谢谢约翰。我怀疑这是正确的答案,但澄清一下,我的意思是我的后端 HTTP 服务器将负责将 HTTP 重定向到 HTTPS,因此他们的负载均衡器不需要了解第 7 层。
    • @JesseShieh 您的后端服务器将永远不会使用 SSL 代理负载平衡器在端口 80 上获得前端 HTTP 流量。仔细检查我的答案中支持的端口号 - 端口 80 不是其中之一。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2016-04-17
    • 1970-01-01
    • 2015-07-11
    • 2010-10-15
    • 2011-01-26
    • 2019-04-10
    相关资源
    最近更新 更多