实现Nginx反向代理Apache获取用户真实IP。

其他配置这里就不逼逼了。

Apache参考地址:

http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html

http://httpd.apache.org/docs/trunk/mod/mod_log_config.html

环境:单服务器
Nginx 1.7
Apache 2.4 (2.2的需要用mod_rpaf)

Nginx:编译安装时需要 –with-http_realip_module
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://myserver;

upstream myserver {
 ip_hash;
 server 127.0.0.1:8081;
 server 127.0.0.1:8082;
}
Apache:
LoadModule remoteip_module modules/mod_remoteip.so
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1

LogFormat “%h %a %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined
LogFormat “%h %a %l %u %t \”%r\” %>s %b” common

按以上配置,就可以实现通过PHP直接获取用户这是IP,而且日志也没问题了。

Apache日志:
127.0.0.1 123.123.123.123 – – [05/May/2015:09:50:31 +0800] “GET /test.php HTTP/1.1″ 200 82
127.0.0.1 123.123.123.123 – – [05/May/2015:09:50:32 +0800] “GET /test.php HTTP/1.1″ 200 82

发表评论

电子邮件地址不会被公开。 必填项已用*标注