Ubuntu 升级后,mod_rpaf 与 Nginx 前端、Apache 后端出现问题

Ubuntu 升级后,mod_rpaf 与 Nginx 前端、Apache 后端出现问题

我正在运行用于静态文件的 Nginx 前端,并代理到用于 PHP 和 Passenger 的 Apache 后端,使用 Apache 的 mod_rpaf 在后端设置正确的远程 IP 地址。在我升级到 Ubuntu 12.04 (Precise) 之前,一切正常。现在 Apache 报告所有来自 127.0.0.1 的连接。

这是相关配置。升级后这里没有任何变化。

Nginx的:

proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;

mod_rpaf:

<IfModule mod_rpaf.c>
    RPAFenable On
    RPAFsethostname On
    RPAFproxy_ips 127.0.0.1 ::1
    RPAFheader X-Forwarded-For
</IfModule>

我正在使用%{X-Forwarded-For}i我的 Apache LogFormat 指令,并且访问日志显示了正确的远程地址,所以我知道 Nginx 正在正确传递地址。

phpinfo()测试中,HTTP_X_FORWARDED_FOR 显示正确的远程地址,但 REMOTE_ADDR 是 127.0.0.1。这也反映在 PHP 应用程序中,例如 WordPress 评论。

我尝试将 Nginx 和 mod_rpaf 切换到 X-Real-IP,但没有效果。

是否有我忽视的改变?

相关版本信息,从 Ubuntu 存储库安装的所有内容:

Nginx 1.1.19
Apache 2.2.22
mod_rpaf 0.6

答案1

我自己也遇到过这个问题。周五确认有一个 Ubuntu 错误。您可以通过更改以下内容来恢复正常运行:

<IfModule mod_rpaf.c>

<IfModule mod_rpaf-2.0.c>

在 /etc/apache2/mods-available/rpaf.conf 中

答案2

mod_rpaf 似乎已在 Debian Jessie 中被弃用,并且进一步的开发已停止。请切换到 mod_remoteip,它是 Debian Jessie 中的默认模块。

答案3

只是对这个问题的更新。mod_rpaf 使用的变量的格式已更改 - Apache 目前将拒绝使用上面列出的变量(RPAFenable、RPAFsethostname、RPAFproxy_ips、RPAFheader)启动。

新格式如下:

LoadModule              rpaf_module modules/mod_rpaf.so
RPAF_Enable             On
RPAF_ProxyIPs           127.0.0.1 10.0.0.0/24
RPAF_SetHostName        On
RPAF_SetHTTPS           On
RPAF_SetPort            On
RPAF_ForbidIfNotProxy   Off

相关内容