自从Nginx出现以后,我们都喜欢让 Nginx 跑在前方处理静态文件,然后通过 proxy 把动态请求过滤给 apache。
这么有个问题,跑在后方 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 配合Nginx proxy 使用。
说明:http://stderr.net/apache/rpaf/
下载: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
Apache 的目录按自己的环境修改,并选择相应的安装方式:
#/usr/local/apache/bin/apxs -i -a -c mod_rpaf.c Apache 1.3.x 的安装方式
#/usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c Apache 2.x 的安装方式
完成后会在 http.conf 的 LoadModule 区域 为你多加了一行。
LoadModule mod_rpaf-2.0.so_module modules/mod_rpaf-2.0.so

经 apache 2.2.6 的实验,使用这一行启动 apache 的时候会报错的。
所以改为:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
并在下方添加
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 192.168.10.2 # 填写Nginx所在的内网IP。
RPAFheader X-Forwarded-For
保存退出后重启apache
再看看 apache 的日志内容? 呵,不再是来来去去的那几个IP了吧。

转载自http://blog.sina.com.cn/s/blog_4560b80b0100m79m.html

Nginx和Apache共存环境下apache获得真实IP的更多相关文章

  1. 多路由器环境下路由器的入口IP地址及DHCP设置探讨

    多路由器环境下路由器的入口IP地址及DHCP设置探讨 这里把路由器的LAN口管理IP地址称为路由器的入口地址,把直接接入互联网的路由器称为主路由器,其他路由器称为从路由器.在多路由器环境下路由器的设置 ...

  2. Nginx 内置变量,细化规则,真实IP获取及限制连接请求

    希望下周测试之后能用起来!!!感觉很有用的. http://www.bzfshop.net/article/176.html http://www.cr173.com/html/19761_1.htm ...

  3. [已解决]通过多层nginx,tomcat服务无法获取外网真实IP

    问题描述: 使用腾讯的御天验证码,提示IP非法IP,内网的tomcat,经过2层nginx代理,服务获取的IP地址为内网ip地址,由于腾讯云的御天验证码对单一IP的频繁访问有拦截的,认定为非法IP(刷 ...

  4. 关于CDN下查找网站真实ip

    关于CDN下查找网站真实ip From  t00ls.net -----雨苁收集 杂乱无章,自己慢慢看,有问题加Q2359795780~~~~~~噗 先来几张t00lslogo             ...

  5. JAVA获取客户端请求的当前网络ip地址(附:Nginx反向代理后获取客户端请求的真实IP)

    1. JAVA获取客户端请求的当前网络ip地址: /** * 获取客户端请求的当前网络ip * @param request * @return */ public static String get ...

  6. linux环境下Apache+Tomcat集群配置

    写在前面 apache配置多个tomcat,实现请求分流,多个tomcat服务均衡负载,增加服务的可靠性.最近研究了一下,遇到许多问题,记录一下,方便以后查阅,不喜欢apache,nginx也是可以做 ...

  7. Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP

    nginx反向代理后,在应用中取得的ip都是反向代理服务器的ip,取得的域名也是反向代理配置的url的域名,解决该问题,需要在nginx反向代理配置中添加一些配置信息,目的将客户端的真实ip和域名传递 ...

  8. 多网卡环境下Eureka服务注册IP选择问题

    一.问题场景 服务器上分别配置了eth0, eth1和eth2三块网卡,只有eth1的地址可供其它机器访问,eth0和eth2的 IP 无效.在这种情况下,服务注册时Eureka Client会自动选 ...

  9. 使用CDN后如何配置Apache使其记录访客真实IP

    今天想看看哪些地区的人访问过我的网站,于是打开Apache网站响应日志,把访客IP复制到百度,发现搜到的全部都是我是用的CDN的节点IP,真实的访客IP并没有被记录. 如图所示,上面的103.45.7 ...

随机推荐

  1. Android开发者必知的开发资源

    推荐书籍 我推荐下面两本书: The Busy Coder’s Guide to Android Development <The Busy Coder’s Guide to Android D ...

  2. java中执行js代码

    要在java中执行js代码,首先明白,java不支持浏览器本身的方法.支持自定义的js方法,否则会报错 先新建一个js文件:jsss.js 内容如下: function aa(a,b){ return ...

  3. 详解Linux配置iSCSI方法

    iSCSI技术是在2001年初由IBM及Cisco联合制定的技术,在2003年5月微软在 Windows 2003中 开始自己正式支持iSCSI微软此举很大程度上的推动了iSCSI技术的发展.下面为大 ...

  4. Lowest Common Ancestor of a Binary Tree——Leetcode

    Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree. According ...

  5. Linux学习笔记9——make和Makefile

    一,Makefile的文件名 默认的情况下,make命令会在当前目录下按顺序找寻文件名为“GNUmakefile”.“makefile”.“Makefile”的文件,大部分情况下,make命令都支持m ...

  6. ACM3787

    /* 问题说明 给定两个整数A和B,其表示形式是:从个位开始, 每三位数用逗号","隔开. 现在请计算A+B的结果,并以正常形式输出. 输入 输入包含多组数据数据,每组数据占一行, ...

  7. openStack使用宿主机监控

    10个vm 平稳运行 top 数值

  8. 简单粗暴地理解 JavaScript 原型链

    尼玛!你特么也是够了! Don’t BB! Show me the code! function Person (name) { this.name = name; } function Mother ...

  9. OfficePickers

    OfficePickers http://www.codeproject.com/Articles/12327/Office-2003-Color-Picker     来自为知笔记(Wiz) 附件列 ...

  10. DSPack各种使用方法

    1. DSPack 2.3.4 安装   一. 下载由于sourceforge最近不能访问,所以可以去 http://www.progdigy.com/ 下载.下载 http://www.progdi ...