我想弄清楚如何设置haproxy和SSL反向代理服务器的SSL场,我正在寻找一些一般性的build议:
是否有可能满足以下所有条件:
如果所有这三个都不可能,我想知道什么是权衡。 现在我正在考虑类似下面的内容,但这可能会改变:
Haproxy 443 TCP Proxy Frontend – > SSL代理(也许Nginx)在高端口 – > Haproxy HTTP前端 – > Web服务器
我意识到我可以跳过第二跳回haproxy,但HAproxy中的一切的单一视angular可能是好的。 另外如果我必须使用TProxy,也许回到haproxy从SSL农场将使路由更简单?
参考文献:
http://haproxy.1wt.eu/download/1.5/doc/configuration.txt
http://1wt.eu/articles/2006_lb/index_05.html
凯尔,
如果您只需要对SSL部分进行故障转移,而不是负载平衡,那么这就是我的build议。 在两个节点上安装haproxy + keepalived + stunnel(修补程序)。 Keepalived拥有服务地址,并检查stunnel和haproxy进程的存在,以计算其权重,以使最佳形状的节点成为主节点。 Stunnel通过端口443接收stream量,并将其转发到您喜欢的任何端口上的haproxy。 为了让haproxylogging客户端的IP地址,你需要为stunnel提供x-forwarded-for补丁(你可以在我的网站上find它)。 然后你会告诉haproxyloggingx-forwarded-for头。
但是有一个限制。 如果你支持HTTP keep-alive,那么stunnel只会添加一个x-forwarded-for标头,这有点问题。 在Exceliance,我们已经开始研究一个补丁来将连接参数从stunnel转发到haproxy,而不是使用x-forwarded-for来播放。 这样,haproxy相信它从真正的客户端获得了连接。 如果你有兴趣,告诉我,我们可以发送给你一旦完成。
好的,我看到这个比较晚,但是怎么样:
VLAN1 VLAN2 INET -- | -- [SSL] -- | -- [HTTP Load Balancer] | | | -- [SSL] -- | -- [WEB01] | | | -- [SSL] -- | -- [WEB02] | | -- [WEB03] etc
用话说:
有几件事情会跳出来:
获取具有实际客户端IP地址的HTTP日志。
假设第一个HTTP级别的设备添加了X-FORWARDED-FOR头文件,并且使用类似于这样的东西或F5的 IIS插件,这应该可以工作。