我正在尝试在nginx代理后面配置一个apache服务器。 nginx和apache实例位于两个不同的主机上。 两台服务器都在运行debian squeeze。
我在前端服务器的nginx.conf中有这个(192.168.1.30)
server {
listen 80; ## listen for ipv4
listen [::]:80 default ipv6only=on; ## listen for ipv6
server_name front.tld.org; #real hostname changed
access_log /var/log/nginx/localhost.access.log;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://192.168.1.1:80; #local IP of the server running apache
}
在apache主机(192.168.1.1)上,/etc/apache2/mods-enabled/rpaf.conf
:
<IfModule mod_rpaf.c>
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 192.168.1.30
RPAFheader X-Real-IP
</IfModule>
我重新启动了nginx和apache2服务。
但是在apache2 /var/log/apache2/access.log
中,我始终拥有来自192.168.1.30(代理)的原始IP而不是真实客户端。
有什么不对吗?知道怎么调试吗?
答案 0 :(得分:1)
为了记录,Debian挤压配置文件有些奇怪。
以下配置有效:
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 172.27.6.74 172.27.7.17 127.0.0.1 ::1
RPAFheader X-Forwarded-For
(我必须删除<IfModule mod_rpaf.c>
)
答案 1 :(得分:0)
您目前看到的是正确的行为。因为只有您的应用程序(在Apache上运行)才能看到真正的IP。例如,安装示例应用程序(如WordPress)并安装实时分析(如Piwik)。将Piwik代码插入WordPress页脚并访问您的WordPress站点(注销后)。现在,Piwik将显示真实IP而不是RPAFproxy_ips设置的内容。