【发布时间】:2012-10-15 14:46:01
【问题描述】:
我已配置 apache(2.4 版)反向代理以在我们的网站上发布安装在内部服务器中的应用程序。一切正常,这些是我在 proxy-html.conf 中添加的行:
ProxyPass /app/bpv0SOCPOkqptPqO6XsIvucLzO7QXJyA/ http://srvacg:9081/acgv4/
如果我写这个 url http://www.mysite.com/app/bpv0SOCPOkqptPqO6XsIvucLzO7QXJyA/ 我可以登录我的内部应用程序,我可以使用它。
问题是我的应用程序检查客户端的 IP 地址,并且同一时间只允许 1 个连接。配置反向代理后,所有连接都使用安装 apache 的服务器的私有 IP 完成。
我试图用 mod_remoteip 来解决这个问题:
RemoteIPHeader X-Forwarded-For
但结果总是一样的。这是apache访问日志:
REMOTE-IP: %a - LOCAL-IP: %A | X-Forwarded-For: %{X-Forwarded-For}i | h: %h | UNDERLYING CLIENT IP: %{c}a |
REMOTE-IP: 217.57.XXX.XXX - LOCAL-IP: 192.168.89.3 | X-Forwarded-For: 217.57.XXX.XXX | h: 217.57.XXX.XXX | UNDERLYING CLIENT IP: 217.57.XXX.XXX |
217.57.XXX.XXX是客户端ip,192.168.89.3是内部ip,是我的应用收到的ip。我不知道它是如何获得这些信息的。
谁能帮帮我?
【问题讨论】:
-
也许您可以针对这种情况简单地扩展您的应用程序?如果存在 X-Forwarded-For 标头,请检查该 ip 地址而不是正常请求 ip?
-
Arkasha,对不起,我不能。该应用程序是一个管理软件,我不能动手!谢谢
-
好的,无论“管理软件”是什么,我都知道您无法详细修改其行为。我认为不可能用初始化客户端地址替换代理服务器 IP 地址。虽然它可能能够伪造(或“构建”)这样的包:希望你的防火墙会阻止这样的请求,因为它们似乎来自外部 IP 地址......
标签: apache proxy reverse proxypass