2015-04-12 67 views
0

我想通過HA Proxy在端口5281上路由BOSH HTTPS流量。 HA代理已經在端口443上路由SSL。也就是說,我想用相同的證書加密端口443和5281。 443轉發到我的Web羣集。 5281被轉發到我的XMPP服務器。HA代理可以配置爲將SSL端口添加到443?

我使用Tutum docker雲管理,所以我使用他們的dockerized版本的HA Proxy。但我沒有辦法做到我想在這裏做的事情:https://github.com/tutumcloud/tutum-docker-clusterproxy

通過比較,我可以使用Amazon Load Balancer來做到這一點,但我仍然必須將其轉發給HA代理以平衡我的容器,因爲ALB會不處理端口級別的平衡,HA代理通過鏈接的容器很好地集成。但是在這個過程中,我失去了我的X-Forwarded-Proto頭(它不像X-Forward-For一樣),所以在這個設置中,我無法確定始發流量是否是SSL加密的(並相應地重定向它) 。這樣的設置也有點複雜 - 在不同的環境中,另一個負載平衡器在另一個之前 - 惡作劇。

任何想法如何讓HA Proxy做到這一點?

+0

我已經發布了一個答案,但我並不完全確定自己是否完全明白了你的要求。另外,沒有理由爲什麼你應該從ELB級聯中「丟失」X-Forwarded-Proto - > HAProxy,這是我經常在我的環境中使用的一種設置(不同的站點,不同的SSL證書碰到同一個集羣,環境SNI不是一個可行的選擇,我有ELB卸載SSL工作)。如果ELB設置它,HAProxy應該通過它,它應該是。 –

回答

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)。