nginx反向代理apache获取用户真实ip问题

stonenyy 发布于 2015/05/05 10:30
阅读 1K+
收藏 0

需实现nginx反向代理apache获取用户真实ip,
php程序可以获得用户真实ip(已实现),
nginx日志正常,但apache日志只能获得127.0.0.1地址(未实现)。

参考地址:http://httpd.apache.org/docs/trunk/mod/mod_remoteip.html

系统:CentOS 6.5
代理:Nginx 1.7
服务:Apache 2.4

Nginx:--with-http_realip_module
set_real_ip_from                            127.0.0.1;
real_ip_header                               X-Real-IP;
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 %{c}a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %{c}a %l %u %t \"%r\" %>s %b" common

apache日志显示:
127.0.0.1 127.0.0.1 - - [05/May/2015:09:50:31 +0800] "GET /test.php HTTP/1.1" 200 82
127.0.0.1 127.0.0.1 - - [05/May/2015:09:50:32 +0800] "GET /test.php HTTP/1.1" 200 82

按我理解,日志里第二个127.0.0.1应该是用户的真实ip,但却未实现,有高手帮分析下不,是我理解错误还是配置存在问题,先谢了。

以下是问题补充:

@stonenyy:nginx里的2个配置无效,忘了删了。 set_real_ip_from 127.0.0.1; real_ip_header X-Real-IP; (2015/05/05 10:45)
@stonenyy:日志格式参考:http://httpd.apache.org/docs/trunk/mod/mod_log_config.html (2015/05/05 10:53)
加载中
0
stonenyy
stonenyy

经过测试,搞定了,是apache日志格式写错了,不应是 %{c}a ,应该是 %a 。

擦!

0
stonenyy
stonenyy

引用来自“stonenyy”的评论

经过测试,搞定了,是apache日志格式写错了,不应是 %{c}a ,应该是 %a 。

擦!

不应是 %{c}a ,应该是 %a
返回顶部
顶部