我有以下设置:
(internet) ---> [ pfSense Box ] /-> [ Apache / PHP server ]
[running HAproxy] --+--> [ Apache / PHP server ]
+--> [ Apache / PHP server ]
\-> [ Apache / PHP server ]
Run Code Online (Sandbox Code Playgroud)
对于 HTTP 请求,这很好用,请求被分发到我的 Apache 服务器就好了。对于 SSL 请求,我让 HAproxy 使用 TCP 负载平衡分发请求,但是它可以工作,因为 HAproxy 没有充当代理,它没有添加X-Forwarded-ForHTTP 标头,并且 Apache/PHP 服务器不知道客户端的真实IP地址。
所以,我stunnel在HAproxy前面加了,读到stunnel可以加X-Forwarded-ForHTTP头。但是,我可以安装到 pfSense 中的包没有添加这个标头......而且,这显然会扼杀我使用 KeepAlive requests 的能力,我真的很想保留它。但是扼杀了这个想法的最大问题是 stunnel 将 HTTPS 请求转换为普通的 HTTP 请求,所以 PHP 不知道 SSL 已启用并试图重定向到 SSL …