Mar*_*ged 10 haproxy http-proxy
我需要在公共内部托管的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
Run Code Online (Sandbox Code Playgroud)
(显然这些不是我要说的网址,这只是一个例子)
Haproxy能够检查外部应用程序并将流量路由到它们:
在我工作的公司的安全环境中,我必须使用代理,并且haproxy无法连接到外部应用程序.如何让haproxy在http代理后面使用那些外部Web应用程序服务器(不需要身份验证),同时通过公共http页面/浏览器提供对它们的访问?
我很想让它工作,但我真的在 haproxy 文档中找不到任何东西,所以我用谷歌搜索了一下,发现nginx可能可以解决这个问题,但它不适合我,经过更多的谷歌搜索后,我最终得到了找到一个有效的apache配置。
这是重要的部分:
Listen 80
SSLProxyEngine on
ProxyPass /example/ https://www.example.com/
ProxyPassReverse /example/ https://www.example.com/
ProxyRemote https://www.example.com/ http://corporateproxy:port
ProxyPass /google/ https://www.google.com/
ProxyPassReverse /google/ https://www.google.com/
ProxyRemote https://www.google.com/ http://corporateproxy:port
Run Code Online (Sandbox Code Playgroud)
我非常确定应该有一种方法可以将此配置转换为 nginx 甚至 haproxy...如果我设法找到时间,我将用我的发现更新答案。
为了让 apache 工作,你还应该启用一些模块,我建立了一个github 存储库,其中包含基本的 docker 配置,其中展示了您可以随意查看它以查看完整的工作配置。