不知道又没人想过一个网站使用多个 CDN 的呢?近期 VeryCloud 改版开始就越来越敏感了,访问错误越来越多,于是乎想试试冒险使用这样的方法。当然,我是不建议使用多个 CDN 来加速网站的。

使用多个 CDN 时,如何获取真实的客户端 IP?

我在去年的这个时候曾介绍过《Linux 从 CDN 中获取真实访客 IP》,今天我要说的则是另外的一种思路。去年讲到的获取客户端 IP 的原理大致就是使用 real ip 模块来特定读取 XFF 头,但是 VeryCloud 却偏偏不使用 X-Forwarded-For 而使用 Cdn-Real-Ip 来传递 IP。

那么问题就来了,挖掘机到底哪家强? 如何在使用多个 CDN 的时候还可以获取到真实 IP?

先放一张我网站同时使用百度云加速(联通)、360 网站卫士(电信)、VeryCloud (默认)的效果:

使用多个 CDN 时,如何获取真实的客户端 IP?

效果仅供参考,看起来 ping 值是好了那么点点,不过实际访问速度却降低了。别问我为什么还非要用,因为任性!


教程开始

其实这个思路非常的简单,就是反代。

1、修改自己网站的监听端口为 8080

使用多个 CDN 时,如何获取真实的客户端 IP?

2、新建一个 nginx 配置,监听 80、反代 127.0.0.1:8080。类似如下:

server {
        listen  80;
        server_name  zntec.cn *.zntec.cn;

        location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect off;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $http_x_forwarded_for;

        access_log  /var/log/http_proxy_access.log;
        }
}

3、然后重载一下 Nginx。


如果我要让 VeryCloud 奇葩的 Cdn-Real-Ip 头也可以传递真实 IP 呢?

把刚才规则中 “proxy_set_header X-Real-IP $http_x_forwarded_for;” 的 “X-Real-IP” 改为 “Cdn-Real-Ip” 然后在你的站点配置中加入 VeryCloud 的所有 IP 和 127.0.0.1,就像这样:

set_real_ip_from 60.191.139.121;
set_real_ip_from 101.64.234.121;
set_real_ip_from 61.160.245.190;
set_real_ip_from 120.195.110.201;
set_real_ip_from 112.82.223.190;
set_real_ip_from 114.80.226.232;
set_real_ip_from 112.65.231.57;
set_real_ip_from 127.0.0.1;
real_ip_header Cdn-Real-Ip;

这样处理之后,VeryCloud 设置端口为 8080、然后由于其他的 CDN 无法反代端口所以只可以 80,但是 80 会将获取到的真实 IP 转为 Cdn-Real-Ip 继续传递到 8080,又由于 VeryCloud 本身就是这个头、所以可以获取真实的客户端 IP。


小结

这么处理的好处就是不用加各大 CDN 的所有 IP 进去 。。

还有一个更好的办法,那就是直接修改日志格式,在 Nginx.conf 中修改 log_format,但是这样的话其他不用 CDN 的网站就都要一个个修改为读 remote_addr 了。

这个看着办吧 。。我就是闹着好玩。

千万要提醒你们的一点就是:我并不赞同多个 CDN 同时使用。

目前有24条回应
Comment
Trackback
Loading ....
  • imlonghao 回应于2015/05/30 18:30 回复TA

    真心不建议同时用多个CDN..

    • Tomas 回应于2015/05/30 22:01 回复TA

      对的 。。因为这样,DNS 的错误率可以说是大大的增加了

  • 快乐家园 回应于2015/05/19 18:22 回复TA

    好像就vc支持https吧、就用它了、vc的客服真的很好

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

      国内的免费 CDN 貌似就 VC 和 YUNDUN 支持 https

      VC 更屌,可以监听任何端口 。。

      • 极雪 回应于2015/07/12 20:55 回复TA

        @Tomas: 是回源的端口还是VC监听的端口

        • Tomas 回应于2015/07/12 20:58 回复TA

          VC 监听端口和回源端口都可以 443

          • 极雪 回应于2015/07/12 21:06 回复TA

            @Tomas: 我说你说的“可以监听任何端口”

            • Tomas 回应于2015/07/12 21:12 回复TA

              我说明白一点吧。。。"可以反代任何端口"

  • 懒汉!!!!!!

    • Tomas 回应于2015/05/16 22:20 回复TA

      最近想写 HHVM 的文章,但是看到满大街都是了。 。又不想写了 。。。额 。。我在想,更新什么文章比较好

  • 菠萝格格 from 博客志 回应于2015/05/08 21:11 回复TA

    你最近更新得很不频繁

    • Tomas 回应于2015/05/08 21:20 回复TA

      对啊 。。最近都是一个月一篇左右

  • Xider 回应于2015/05/05 22:04 回复TA

    这CDN用的,B案以后就是任性啊

    • Tomas 回应于2015/05/07 02:30 回复TA

      你也可以BA呀,BA之后屌屌哒、国内主机爽爽哒

  • 陈继博客 回应于2015/04/30 16:52 回复TA

    你这网页上有错误呀

  • ivmm 回应于2015/04/25 19:51 回复TA

    数字》百毒=安全宝》加速乐

    • Tomas 回应于2015/04/26 02:05 回复TA

      数字速度快多了 。。

      • ivmm 回应于2015/04/26 08:17 回复TA

        @Tomas:
        百毒收购安全宝,又有cloudflare的加持,估计以后会小牛逼

        • Tomas 回应于2015/04/26 19:52 回复TA

          估计过不久就开始收费 。。。

  • 皮蛋 回应于2015/04/18 00:14 回复TA

    🙂 加速乐太多错误,vc注册不了,百度云卡死,安全宝满足了。。。

    • Tomas 回应于2015/04/18 00:25 回复TA

      为何 VC 注册不了的 。。。。咨询一下客服看看

      另外。。加速乐是啥玩意儿,只听过减速了 。。

      然后安全宝节点是很多,但是那个界面太卡通了 。。

      • 皮蛋 回应于2015/04/18 10:45 回复TA

        @Tomas: 验证邮箱的时候,叫我登陆,登陆的时候叫我先验证邮箱然后死循环

        • Tomas 回应于2015/04/22 01:16 回复TA

          试试联系客服?VC 客服挺好说话

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