【发布时间】:2015-06-16 19:37:39
【问题描述】:
我必须使用 AWS 负载均衡器将请求转发到 ha-proxy,它对 docker 容器进行负载均衡。
我还需要将非 http 请求重定向到 https。
AWS 在其对 haproxy 的请求中包含 X-Forwarded-For,但 haproxy 不转发 X-Forwarded。如何配置 haproxy 以转发该标头。
我正在使用https://github.com/tutumcloud/tutum-docker-clusterproxy
最终我想摆脱 AWS 负载均衡器,但目前我需要忍受它。
感谢您的任何想法!
编辑 以下是 HA 代理转发到 Web 容器的内容:
headers { host: 'idelog.me',
Apr 10 22:30:47 Web_XMPP 3dec26a7-0440-4569-a945-1a7cfa5a9d11: cookie: 'connect.sid=s%3AwXyBf3CCQQIl10cQPaxRyb_xe-ExbGkY.Xjy9vKCTaLZJ3MQLfxG2PrAWVKJC%2F9hToKvj8Ue74gk; AWSELB=5D3B1B0B1857AD2EE7B7A30BE969AF569B1E08E8E3952851007566E67148E417431500E40BE8450431DBBBC243214A643166CD10E6A4FC839D82B6EB5EC83338C7C88E58FF; _ga=GA1.2.455486669.1425248270; _gat=1',
Apr 10 22:30:47 Web_XMPP 3dec26a7-0440-4569-a945-1a7cfa5a9d11: 'cache-control': 'max-age=0',
Apr 10 22:30:47 Web_XMPP 3dec26a7-0440-4569-a945-1a7cfa5a9d11: 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36',
Apr 10 22:30:47 Web_XMPP 3dec26a7-0440-4569-a945-1a7cfa5a9d11: referer: 'http://idelog.me/',
Apr 10 22:30:47 Web_XMPP 3dec26a7-0440-4569-a945-1a7cfa5a9d11: 'x-forwarded-for': '73.162.39.215, 172.31.13.227',
Apr 10 22:30:47 Web_XMPP 3dec26a7-0440-4569-a945-1a7cfa5a9d11: 'x-forwarded-proto': 'http' }
可以看到x-forward-for是拼接的,但是x-forwarded-proto只包含AWS和HA Proxy之间请求的值,始终是http而不是https。
如何告诉 HA 代理将 x-forwarded-proto 的 AWS 值中继到我的 Web 容器?
【问题讨论】:
-
也许以下 serverfault 答案为您指明了正确的方向? serverfault.com/a/428822/274332
-
谢谢,我确实看到了,但我真的不明白如何将它应用到我的案例中。
-
什么意思,HAProxy 不转发那个标头?除非您配置了
option forwardfor或在您的配置中有将其删除的内容,否则它会转发该标头,保持不变。 -
我在问题中澄清了这一点。
x-forward-for很好。没有被 HA 代理转发的是x-forwarded-proto。
标签: amazon-web-services proxy load-balancing haproxy