如何让Web服务器透明获得客户端IP

获得客户端IP原本是一个非常简单的事情,程序里很多时候使用REMOTE_ADDR环境变量就可以了,但随着网络结构复杂性越来越高,比如说Apache前有Nginx,或者Nginx前有Squid,这时就复杂了,还得考虑诸如:HTTP_CLIENTADDRESS,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR等环境变量,当然可以通过编写程序代码来处理此类逻辑,不过这样的解决方法不够透明,毕竟很多第三方程序并没有考虑这些情况,而且后面服务器的日志里面记录的IP全变成了前面服务器的IP,如此一来,Awstats之类的软件就失效了。下面看看如何透明处理:

案例1:Apache前有Nginx

有些网站使用这样的方式来分离静态请求和动态请求,Nginx放在前面处理静态请求,然后再把动态请求转发给后面的Apache,不过如此一来,Apache日志里看到的IP就是Nginx的IP了,为了能让Apache透明获取IP,可以使用mod_rpaf

配置很简单,只需在配置文件里加上如下内容:

LoadModule rpaf_module libexec/apache2/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1 192.168.0.1

RPAFheader X-Forwarded-For


说明:192.168.0.1指的是Nginx内网IP,可以设置多个IP。

最后确认一下Nginx配置文件里在把动态请求转发给Apache的时候是否设置了如下内容:

阅读全文>>

转载于:https://my.oschina.net/lgc/blog/4878

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值