能否将 HA 代理配置为将 SSL 端口转发到 443?

Can HA Proxy be configured to forward an SSL port IN ADDITION to 443?

我想通过 HA 代理在端口 5281 上路由 BOSH HTTPS 流量。 HA Proxy 已经在端口 443 上路由 SSL。也就是说,我想用相同的证书加密端口 443 和 5281。 443 转发到我的网络集群。 5281 被转发到我的 XMPP 服务器。

我使用 Tutum docker 云管理,所以我使用的是他们 docker 化版本的 HA Proxy。但是我在这里看不到做我想做的事情的方法:https://github.com/tutumcloud/tutum-docker-clusterproxy

相比之下,我可以使用 Amazon Load Balancer 做到这一点,但我仍然必须将其转发到 HA 代理来平衡我的容器,因为 ALB 不处理 port-level 平衡,并且 HA 代理通过链接的容器。但是在这个过程中我丢失了 X-Forwarded-Proto header(它不像 X-Forward-For 那样连接),所以在这个设置中我无法判断原始流量是否是 SSL-encrypted (并相应地重定向它)。这样的设置也有点复杂 - 在不同的环境中一个负载均衡器在另一个之前 - 糟糕。

有什么想法可以让 HA Proxy 完成所有事情吗?

如果我对您的问题的解释正确,那么指示 HAProxy 在任何端口上侦听 https 流量就足够简单了。

frontend https-on-another-port
    bind *:5281 ssl no-sslv3 crt /etc/haproxy/path-to-ssl-cert.crt

如果在入站连接上使用了 SSL,您还可以在出站连接上自动添加 X-Forwarded-Proto header。在任何代理声明中:

http-request set-header X-Forwarded-Proto https if { ssl_fc }
http-request set-header X-Forwarded-Proto http unless { ssl_fc }

ssl_fc 是对 "frontend connection uses SSL"(或 TLS)的 built-in 布尔测试。