使用haproxy作为反向代理,使用Internet代理后面的应用程序

Mar*_*ged 10 haproxy http-proxy

我需要在公共内部托管的URL下在内部和外部集成多个Web应用程序.内部部署应用程序与haproxy位于同一数据中心,但非现场应用程序只能通过http代理访问,因为运行haproxy的服务器无法直接访问Internet.因此我必须使用http Internet代理,SOCKS也可能是一个选项.

我如何告诉haproxy后端只能通过代理到达?我宁愿使用像socksify/proxifier/proxychains/tsocks/...这样的额外组件,因为这会带来额外的开销.

此图显示了设置中涉及的组件: 使用代理进行haproxy设置

当我在具有直接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无法连接到外部应用程序.如何让haproxy在http代理后面使用那些外部Web应用程序服务器(不需要身份验证),同时通过公共http页面/浏览器提供对它们的访问?

dav*_*ubz 3

我很想让它工作,但我真的在 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 配置,其中展示了您可以随意查看它以查看完整的工作配置。