Linux 从 CDN 中获取真实访客 IP 5月01日
关于 CDN,我们还有很多可以讲的。昨天讲到了《利用 iptables 使网站仅可通过 CDN 访问》
如果按照我昨天的方法操作了的话,那么你的访问日志中应该有不少来自 CDN 的 IP 。。都是 CDN 的。
这里讲的是 Linux 下的 Apache/Nginx 的教程,用 CentOS 做示范。
一、首先找出你的 CDN 的所有 IP:
就像我们昨天文章说的一样,在那些 CDN 官网的帮助文库或控制面板找:
这里用网站卫士作为例子,整理出来后、按照如下方法操作:
二、操作 Apache/Nginx:
这个也是比较重要的缓解,请各位看好。
1、Apache:
wget http://www.stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz;tar xvfz mod_rpaf-0.6.tar.gz;cd mod_rpaf-0.6;/usr/local/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
修改 httpd.conf,在里面末尾加入如下语句:
<IfModule mod_rpaf.c> RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 RPAFheader X-Forwarded-For </IfModule>
2、Nginx:
重新编译 Nginx,并加入 --with-http_realip_module 参数,如果是 LNMP 则使用如下脚本升级即可:
wget https://www.zntec.cn/wp-content/uploads/2014/05/upgrade_nginx.sh_.txt;chmod +x upgrade_nginx.sh_.txt;sh upgrade_nginx.sh_.txt
然后把整理出来的 IP 修改为如下这样:
set_real_ip_from 183.136.133.0/24; set_real_ip_from 183.60.211.0/24; set_real_ip_from 220.181.55.0/24; set_real_ip_from 101.226.4.0/24; set_real_ip_from 180.153.235.0/24; set_real_ip_from 122.143.15.0/24; set_real_ip_from 27.221.20.0/24; set_real_ip_from 202.102.85.0/24; set_real_ip_from 61.160.224.0/24; set_real_ip_from 112.25.60.0/24; set_real_ip_from 182.140.227.0/24; set_real_ip_from 221.204.14.0/24; set_real_ip_from 222.73.144.0/24; set_real_ip_from 61.240.144.0/24; set_real_ip_from 113.17.174.0/24; real_ip_header X-Forwarded-For;
就像写 iptables 规则一样、0~255 的写成 0/24,然后按照上面的整理后加在站点配置的 server 层。
三、重启 Apache 或 Nginx 然后就生效了。
小结
最近精神好,多刷几篇文章,今儿个五一、祝各位劳动节多赚钱少劳动(不知道是好是坏)
目前有18条回应
Comment
Trackback
Loading ....
- 本篇文章没有Trackback
一般部分CDN都会支持传递真实IP的吧。
不会,都是需要自己配置一下的 。。
还可以这样...
对的 。。而且配置其实也很简单
@Tomas:
以前都是交给 程序处理的..
但是那样就没有真实的访问日志啦~
而且也没办法通过服务器软件限制 xxx 访问了
@Tomas:
是这样的,所以 我不知道嘛w
那就快跟我一起说:“新技能 GET!”
CDN。。lighttpd怎么玩呢,规则咋写~~我有一个VPS是lighttpd的,呵呵,五一快乐
Lighttpd 的话要用 mod_extforward,这个可以搜索一下。
不过我觉得用 lighttpd 不如用 nginx 。。
我的自带CDN导致我无法分辨出正常的访问IP
西数自带的 360 对不,也可以用这个办法、我现在也用的 360~
@Tomas:
景安自带360就开不了
360 网站卫士合作的节点和官网的节点是一样的,直接使用文中方法就 ok 了呀~
好像以前某免费cdn也有着问题
哪个免费 cdn 也有问题?
@Tomas: 好像是个有日本节点的,I开头的
一般都可以用这个方法的,只有有 IP 即可~