关于 CDN,我们还有很多可以讲的。昨天讲到了《利用 iptables 使网站仅可通过 CDN 访问

Linux 从 CDN 中获取真实访客 IP

如果按照我昨天的方法操作了的话,那么你的访问日志中应该有不少来自 CDN 的 IP 。。都是 CDN 的。

这里讲的是 Linux 下的 Apache/Nginx 的教程,用 CentOS 做示范。

一、首先找出你的 CDN 的所有 IP:

就像我们昨天文章说的一样,在那些 CDN 官网的帮助文库或控制面板找:

Linux 从 CDN 中获取真实访客 IP

这里用网站卫士作为例子,整理出来后、按照如下方法操作:

二、操作 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 ....
  • Sang 回应于2014/05/04 01:29 回复TA

    一般部分CDN都会支持传递真实IP的吧。

    • Tomas 回应于2014/05/04 18:41 回复TA

      不会,都是需要自己配置一下的 。。

  • Kunr 回应于2014/05/01 21:16 回复TA

    还可以这样...

    • Tomas 回应于2014/05/01 22:27 回复TA

      对的 。。而且配置其实也很简单

      • Kunr 回应于2014/05/01 22:34 回复TA

        @Tomas:
        以前都是交给 程序处理的..

        • Tomas 回应于2014/05/01 22:36 回复TA

          但是那样就没有真实的访问日志啦~

          而且也没办法通过服务器软件限制 xxx 访问了

          • Kunr 回应于2014/05/01 22:42 回复TA

            @Tomas:
            是这样的,所以 我不知道嘛w

            • Tomas 回应于2014/05/01 22:43 回复TA

              那就快跟我一起说:“新技能 GET!”

  • 烟花易冷 回应于2014/05/01 17:35 回复TA

    CDN。。lighttpd怎么玩呢,规则咋写~~我有一个VPS是lighttpd的,呵呵,五一快乐

    • Tomas 回应于2014/05/01 19:47 回复TA

      Lighttpd 的话要用 mod_extforward,这个可以搜索一下。

      不过我觉得用 lighttpd 不如用 nginx 。。

  • 免费资源部落 回应于2014/05/01 15:21 回复TA

    我的自带CDN导致我无法分辨出正常的访问IP

    • Tomas 回应于2014/05/01 19:45 回复TA

      西数自带的 360 对不,也可以用这个办法、我现在也用的 360~

      • 敏敏 回应于2014/05/13 21:06 回复TA

        @Tomas:
        景安自带360就开不了

        • Tomas 回应于2014/05/14 23:59 回复TA

          360 网站卫士合作的节点和官网的节点是一样的,直接使用文中方法就 ok 了呀~

  • ytf4425 回应于2014/05/01 15:07 回复TA

    好像以前某免费cdn也有着问题

    • Tomas 回应于2014/05/01 19:45 回复TA

      哪个免费 cdn 也有问题?

      • ytf4425 回应于2014/05/01 19:47 回复TA

        @Tomas: 好像是个有日本节点的,I开头的

        • Tomas 回应于2014/05/01 19:51 回复TA

          一般都可以用这个方法的,只有有 IP 即可~

  • 本篇文章没有Trackback
你目前的身份是游客,请输入昵称和电邮!