我正在使用Nginx,FastCGI,APC,Memcache和Varnish来运行MediaWiki安装。 我有一些问题,最近的更改显示为来自127.0.0.1的匿名用户。 我怀疑问题是,Varnish没有正确地将用户IP传递给Nginx,但是我在vcl_recv中有这个function:
# Set client IP if (req.http.x-forwarded-for) { set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip; } else { set req.http.X-Forwarded-For = client.ip; }
任何人都可以告诉我什么,我可能需要validation,可能会导致这个问题? 因为我不知所措
您必须configurationMediaWiki,以便它实际上遵从X-Forwarded-For
标题。 没有这些设置,MediaWiki将会忽略它。
(由于历史原因,所有这些configuration选项都指向Squid …)
至less,这些行必须在你的LocalSettings.php
:
$wgUseSquid = true; $wgSquidServers = array('127.0.0.1'); # IP address of your varnish server
您从configuration中描述的行,将X-Forwarded-For
标题设置为客户端IP。 但是,您仍然需要告诉您的Web服务器(Nginx)检查并使用该值作为IP地址。
最简单的方法是使用Nginx的真实IP模块 。 首先,检查Nginx是否已经使用真正的IP模块构build:
运行nginx -V
并查找--with-http_realip_module
然后修改你的Nginxconfiguration文件(通常是/etc/nginx.conf),把以下内容添加到http
部分:
#Upstream server address (ie Varnish address) set_real_ip_from 127.0.0.1; real_ip_header X-Forwarded-For;
现在重新启动Nginx和所有位置的IP地址(日志,传递给php的值等)现在应该从X-Forwarded-For头部派生。