Ubuntu升级后Nginx前端,Apache后端的mod_rpaf问题


10

我正在运行用于静态文件的Nginx前端,并使用Apache的mod_rpaf在后端上设置正确的远程IP地址,以代理PHP和Passenger的Apache后端。一切正常,直到我升级到Ubuntu 12.04(精确版)。现在,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

Answers:


10

我自己一直在处理这个问题。周五确认有一个Ubuntu错误。您可以通过以下方法使事情再次起作用:

<IfModule mod_rpaf.c>

<IfModule mod_rpaf-2.0.c>

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


升级到12.04后,我遇到了完全相同的问题,并且在找到这篇文章之前,在问题上损失了半天。谢谢!
Kouber Saparev


1
对于升级到14.04之后再发布此帖子的任何人,此修复程序将不再适用;相反,您将要使用mod_remoteip而不是mod_rpaf
Stefan Magnuson 2014年

1

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


0

只是此问题的更新。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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.