我想通过HA Proxy在端口5281上路由BOSH HTTPS流量。 HA代理已在端口443上路由SSL。即,我想使用相同的证书加密端口443和5281。 443转发到我的网络群集。 5281被转发到我的XMPP服务器。
我使用Tutum docker云管理,所以我使用的是他们的HA代理的dockerized版本。但是我没有在这里找到一种方法来做我想做的事:https://github.com/tutumcloud/tutum-docker-clusterproxy
相比之下,我可以使用Amazon Load Balancer执行此操作,但我仍需将其转发到HA代理以平衡我的容器,因为ALB不处理端口级平衡,并且HA代理通过链接容器很好地集成。但是在这个过程中我失去了我的X-Forwarded-Proto标题(它没有像X-Forward-For那样连接),所以在这个设置中,我无法判断原始流量是否经过SSL加密(并重定向它)因此)。这样的设置也有点复杂 - 在不同的环境中,一个负载均衡器在另一个负载均衡器之前 - 哎呀。
如何让HA Proxy完成整个工作?
答案 0 :(得分:1)
如果我正确地解释您的问题,它很简单,可以指示HAProxy在任何端口上侦听https流量。
frontend https-on-another-port
bind *:5281 ssl no-sslv3 crt /etc/haproxy/path-to-ssl-cert.crt
如果在入站连接上使用了SSL,您还可以在出站连接上自动添加X-Forwarded-Proto
标头。在任何代理声明中:
http-request set-header X-Forwarded-Proto https if { ssl_fc }
http-request set-header X-Forwarded-Proto http unless { ssl_fc }
ssl_fc
是一个内置的布尔测试,用于"前端连接使用SSL" (或TLS)。