0

我有一台运行 Ubuntu 12.04 LTS、Pound 2.6 和 Apache 2.2 的服务器。我还安装并启用了 apache 模块 mod_rpaf(从https://github.com/gnif/mod_rpaf安装)以确保在变量 REMOTE_ADDR 中出现真实的用户 IP 地址而不是代理的地址。这工作正常,但变量 REMOTE_HOST 不会被 mod_rpaf 更改。此变量包含“localhost”,而不是给定用户 IP 地址的主机。

你能帮我吗?

这是我的 mod_rpaf 配置:

root@perseus ~ # cat /etc/apache2/mods-enabled/rpaf.conf 
RPAF_Enable       On
RPAF_ProxyIPs     127.0.0.1
RPAF_Header       X-Forwarded-For
RPAF_SetHostName  On
RPAF_SetHTTPS     On
RPAF_SetPort      On

谢谢

4

2 回答 2

1

Ubuntu LTS 12.04 中存在一个错误,它完全阻止 rpaf 工作。

https://bugs.launchpad.net/ubuntu/+source/libapache2-mod-rpaf/+bug/1002571

解决方法

在 rpaf.conf 中替换

<IfModule mod_rpaf.c>

经过

<IfModule mod_rpaf-2.0.c>
于 2013-01-27T10:17:01.193 回答
1

检查有关缺少 REMOTE_HOST 的先前问题的这些答案:

REMOTE_HOSTS 是一个变量,可能会或可能不会由 apache 填充(如果不设置它会更好,否则它意味着 apache 对每个传入请求进行 DNS 查询)。因此,您的代码中的任何内容都不应依赖 REMOTE_HOST。任何应用程序都不应假定此变量将存在并正确填充。

mod_rpaf 做了它的设计,文档:

将 REMOTE_ADDR、HTTPS 和 HTTP_PORT 设置为上游代理提供的值。

现在您有一个工作的 REMOTE_ADDR,这是您应该信任的唯一变量,如果您真的需要,请在 REMOTE_HOST 中复制它,然后在您的应用程序代码中简单地进行操作。

于 2012-10-17T12:13:03.353 回答