Nginx反向代理Apache的情况下让Apache获得真实IP
2013-03-27 18:36
597 查看
自从Nginx出现以后, 我们都喜欢让 Nginx 跑在前方处理静态文件, 然后通过 proxy 把动态请求过滤给 apache.
那么就会出现个问题, 跑在后方 apache 上的应用获取到的访客IP都是Nginx所在服务器的IP , 或者是本机 127.0.0.1 .
最明显就是查看 apache 的访问日志.就会见到来来去去都是内网的IP.
如果你的应用有诸如, "单个IP不能重复登陆”, "单个IP注册相隔n分钟”... 之类用于IP判别的安全规则.
这么就麻烦了....
但还好, 你可以通过修改 nginx proxy 的参数令后端应用获取到 Nginx 发来的请求报文获取到外网的IP.
但这解决的问题单单只是应用上, apache 日志上所获取的ip依然还是本地.
这个时候就需要配合apache的一个第三方模块"mod_rpaf"了, 官方网站: http://stderr.net/apache/rpaf/
安装方法:
安装完成后在httpd.conf添加如下:
重启apache, 再看apache的访客日志就是真实的用户ip了.
遗留问题为, SERVER_ADDR成127.0.0.1了, 求解???
那么就会出现个问题, 跑在后方 apache 上的应用获取到的访客IP都是Nginx所在服务器的IP , 或者是本机 127.0.0.1 .
最明显就是查看 apache 的访问日志.就会见到来来去去都是内网的IP.
如果你的应用有诸如, "单个IP不能重复登陆”, "单个IP注册相隔n分钟”... 之类用于IP判别的安全规则.
这么就麻烦了....
但还好, 你可以通过修改 nginx proxy 的参数令后端应用获取到 Nginx 发来的请求报文获取到外网的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;
但这解决的问题单单只是应用上, apache 日志上所获取的ip依然还是本地.
这个时候就需要配合apache的一个第三方模块"mod_rpaf"了, 官方网站: http://stderr.net/apache/rpaf/
安装方法:
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz tar zxvf mod_rpaf-0.6.tar.gz cd mod_rpaf-0.6 /opt/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
安装完成后在httpd.conf添加如下:
LoadModule mod_rpaf-2.0.so_module modules/mod_rpaf-2.0.so RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 192.168.1.90 #Nginx所在服务器的IP. RPAFheader X-Forwarded-For
重启apache, 再看apache的访客日志就是真实的用户ip了.
遗留问题为, SERVER_ADDR成127.0.0.1了, 求解???
相关文章推荐
- Apache, Nginx获得nginx代理后的真实用户Ip
- Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP
- Nginx做前端时,后端Apache获得真实IP的做法
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- Nginx反向代理多虚拟主机及记录真实客户IP
- nginx设置反向代理,获取真实客户端ip
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- apache 反向代理的时候,通过域名访问是,出现跳转到ip或者无权访问的情况
- 让iis记录nginx反向代理真实ip
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- Nginx反向代理Tomcat日志获取真实IP
- Nginx 反向代理下拿到客户端的真实IP
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?
- Nginx反向代理下IIS获取真实IP
- nginx反向代理后应用程序如何获取客户端真实IP?
- nginx反向代理后应用程序如何获取客户端真实IP?