我一直在寻找支持SSL的服务器集群的不同设置,我想用你的标准来衡量我的想法。
要求:
希望:
集中路由规则
---<----http-----<-- | | Inet -->HA--+---https--->NGInx_SSL_1..N | | +---http---> Apache_1..M | +---http---> NodeJS
想法:configurationHA将所有SSLstream量(mode = tcp,algorithm = Source)路由到一个将httpsstream量转换为http的NGInx集群。 将来自NGInx的httpstream量重新传递给HA,以实现基于HAconfiguration的负载平衡。
我的问题很简单:这是根据以上要求进行configuration的最佳方式吗?
我一直听说它被部署的方式是,你将有多个负载平衡器,所有运行nginx(或stunnel)去除SSL。 这些将直接连接到后端服务器。 你有一套独立的服务器解密SSL的方法似乎是相当复杂的。
老实说,你希望摆脱这种设置? 你的stream量对于一台服务器来说太多了吗? 你希望得到高可用性(在这种情况下,你需要多个HAproxy服务器,这增加了混乱)?
对我来说,你的设置似乎有点奇怪和复杂。 我也认为,如果可能的话,设法将原始访问者的IP地址join最终的nginx日志将会很困难。
一个常见的select是在haproxy前面使用stunnel 。 Stunnel会解密ssl并将其提供给haproxy,然后可以将这些内容转发给适当的后端服务器。 此解决scheme在转发原始IP地址时也有一些困难,但是如果使用haproxy的1.5开发版本和stunnel的v.4.45或更高版本,则可以使用PROXY协议 。
所以有两个select..用xforwardfor补丁使用stunnel
https://github.com/davean/stunnel-xforwardfor
这将允许您为后端服务器设置标题以读取
我只是坐在它前面的nginx来处理ssl终止,并将xforwardfor标题设置回应用程序。 把它放在与haproxy相同的服务器上。 你也可以使用ngninx根据路由传回,所以不需要haproxy。