我需要在一个公共(public)的内部托管 URL 下集成多个本地和非现场 Web 应用程序。本地应用程序与 haproxy 位于同一数据中心,但场外应用程序只能通过 http 代理访问,因为运行 haproxy 的服务器无法直接访问 Internet。因此我必须使用 http Internet 代理,SOCKS 也可能是一个选项。
我如何告诉 haproxy 只能通过代理访问后端?
我宁愿不使用像 socksify/proxifier/proxychains/tsocks/...这样的附加组件,因为这会带来额外的开销。
此图显示了设置中涉及的组件:
当我在具有直接 Internet 连接的机器上运行它时,我可以使用这个配置并且它工作得很好:
frontend main
bind *:8000
acl is_extweb1 path_beg -i /policies
acl is_extweb2 path_beg -i /produkte
use_backend externalweb1 if is_extweb1
use_backend externalweb2 if is_extweb2
backend externalweb1
server static www.google.com:80 check
backend externalweb2
server static www.gmx.net:80 check
(显然这些不是我正在谈论的 URL,这只是一个示例)
Haproxy 能够检查外部应用程序并将流量路由到它们:
在我工作的公司的安全环境中,我必须使用代理,而 haproxy 无法连接到外部应用程序。
如何启用 haproxy 以使用 http 代理后面的那些外部 Web 应用程序服务器(无需身份验证),同时通过公共(public) http 页面/通过浏览器提供对它们的访问?
最佳答案
如何使用委托(delegate)( http://delegate.org/documents/ )作为一个想法。haproxy -> delegate -f -vv -P127.0.0.1:8081 PROXY=<your-proxy>
http://delegate9.org/delegate/Manual.shtml?PROXY
我知道它不是那么优雅,但它可以工作。
我已经用本地鱿鱼和这个 curl 调用测试了这个设置echo 'GET http://www.php.net/' |curl -v telnet://127.0.0.1:8081
curl 调用模拟了 haproxy tcp 调用。
关于haproxy - 使用 haproxy 作为 Internet 代理后面的应用程序的反向代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47605766/