搭建一个简易的全球CDN/反代缓存节点来给网站加速
| 默认, 教程, 测评 | 11777次浏览 | 20 评论

搭建一个简易的全球CDN/反代缓存节点来给网站加速

| 默认, 教程, 测评 | 11777次浏览 | 20 评论

本人管理或运营的几个网站的主服务器都放在国外, 如果从国内直接访问的速度会比较慢, 而且感觉就算套了CF或阿里云等CDN后, 在国内的效果还是不够理想, 特别是上传速度挺慢的. 后来使用Nginx和fikker配合CloudXNS智能DNS搭建了一套简易的CDN, 现在全球的用户不管是上传, 还是浏览速度都还不错. 最近老是看到论坛有人在讨论反向代理和CDN的问题, 我也来说说我的一些经验和感受吧.

首先确定你的主要用户群是在哪里?

如果主要用户来自中国, 那么建议节点服务器选择香港/台湾/新加坡. 节点服务器一定要离用户进一点, 最好ping值在80以内, 阿里云的香港或者新加坡是一个很好选择. 主站点服务器可以放在美国, 不过主服务器到节点服务器一定要稳定, 但ping值不需要那么好, 一般200甚至250以内都没有问题.

如果你的用户来自欧美, 那么就非常好解决了, 主站随便放在欧洲或者美国东部, 节点放在另外一边都可以, 这样两边的速度都非常快.

建议的解决方案:

主站源服务器放在美国西岸, 反代节点位于香港和法国, 这样基本上照顾到了亚洲/北美和欧洲地区的用户.

9t0Rtf.md.png
9DPZbd.png

节点服务器不需要多好的配置, 一般建议使用KVM构架的VPS, 配置在1核, 512MB的内存, 硬盘10G或以上就好了.

动态网站解决方案(论坛、博客、等动态网页)

1, 如果您的网站是动态网站, 那么建议使用fikker, 这套程序的免费版本只是比收费版本少了一个缓存效果, 通过测试,我感觉反代效果比Nginx好, 另外系统选择CentOS 6 x64, 因为我发现在CentOS 7上上传有Bug. 若系统里再安装一个锐速效果会更好.
fikker的搭建方法很简单,请直接查看官方官方:
https://www.fikker.com/help/install-fikker-linux-step-by-step.html

yum -y install wget
删除必要服务
yum remove httpd nginx -y

wget -c https://www.fikker.com/dl/fikkerd-3.7.7-linux-x86-64.tar.gz
tar zxvf fikkerd-3.7.7-linux-x86-64.tar.gz

cd fikkerd-3.7.7-linux-x86-64
./fikkerd.sh install && ./fikkerd.sh start

管理界面

http://your-ip:6780/

管理员/监控员的初始密码:123456, 登录后建议首先修改密码
如果无法登陆, 请检查防火墙设置

iptables防火墙(Centos 6)

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 6780 -j ACCEPT
service iptables save
service iptables restart

firewall防火墙(CentOS 7)

firewall-cmd --zone=public --add-port=80/tcp --permanent 
firewall-cmd --zone=public --add-port=443/tcp --permanent 
firewall-cmd --zone=public --add-port=6780/tcp --permanent 
firewall-cmd --reload

进入后台在主机管理里面添加您的网站域名和源站IP
9D9Qot.md.png
9D91FP.md.png

另外还可以根据自己的要求去设置一些缓存项目, 如果您对这个不熟悉, 那么使用默认的设置就好了
a7KTQ.md.png

a7IMS.md.png
a765z.md.png
a7A6a.md.png

其实Fikker还有很多功能, 比如页面缓存、实时监控、流量统计、转向管理、防CC攻击等等, 但是免费版本不包括页面缓存, 如果您需要缓存这个功能, 那么建议购买他们的全功能商业版本, 价格是399元/年.
https://www.fikker.com/price.htm

停止服务,在安装目录下面运行:
./fikkerd.sh stop

删除服务,在安装目录下面运行: 
./fikkerd.sh uninstall

注册服务,在安装目录下面运行: 
./fikkerd.sh install

通过上面的方法, 您可以在全球架设多个节点, 如果您的节点比较多, 那么还可以通过他们的主控系统来集中化管理
9DCLgU.md.png

静态网站解决方案 (如图片、html网页、小文件)

2, 如果您的网站绝大部分是静态文件(如图片), 那么建议使用宝塔面板, 配合着Nginx反向代理缓存还是非常好用的. 这样不仅节约原服务器的流量, 还可以提高用户的浏览速度, 当然了, 系统建议还是加上BBR或者锐速, 那样效果好很多.
宝塔反代缓存的设置方法可以参考这里:
https://www.openos.org/post/107/
99r0rF.md.png

智能DNS解析

配置好节点服务器后再去智能DNS里面根据自己的要求解析好域名, 这样基本上一个建议的CDN/反代加速系统就搭建好了.
DNS服务商一般推荐CloudXNS和DNSPOD.
9DiVzT.md.png
9DiEWV.md.png

测试效果

另外本站 https://www.openos.org/ 的主服务器放在加拿大OVH, 中国用户访问解析到阿里云新加坡节点上, 大家可以体验一下实际使用效果. (本垃圾小站, 没有必要架设全球节点)

添加新评论/Responses
  1. JHT

    请问一下博主,本文图片中的是用什么软件/网站测试的?谢谢!

    回复/Reply
    1. @JHT

      PING测试
      https://www.ipip.net/ping.php

      回复/Reply
  2. LOC

    那样子的话,怎么抗ddos 呢,有没有便宜点的抗打方案

    回复/Reply
    1. @LOC

      后台源服务器放在OVH, 前面挂反代, 如果被DDOS自动切换到CloudFlare.

      回复/Reply
      1. John
        @admin

        请问如何设置DDS自动切换到CF?

        回复/Reply
        1. @John

          去一些CF合作面板(如:https://su.geekzu.org )添加域名, 然后ping一下提供的CNAME获取IP地址, 然后进CloudXNS或者DNSPOD里面设置A记录故障自动切换就好了.

          回复/Reply
          1. John
            @admin

            楼主方便私信个qq给我吗, 我的 174747 9 6 5 4

            回复/Reply
            1. @John

              刚建立了一个电报群 https://t.me/openos

              回复/Reply
  3. ALEX

    博主,OVH法国和加拿大机房本身就抗D的,感觉没必要切换到CF,况且CF免费版的难受也不抗D。
    另外,本站用的OVH配置如何,什么价格呢?抗D的vps求推荐。

    回复/Reply
    1. @ALEX

      免费版的CF也抗D的, 多一层防护没什么不好的, 如果觉得CF不行, 那么在前端再加个抗DDoS的VPS也行(比如OVH新加坡的VPS), 没有必要把后端的主服务器直接给别人吧. 另外我这个后端是OVH的独立服务器.

      回复/Reply
  4. Mr.Lee

    博主应该弄个图片灯箱,文章内看不清 (手机),然后打开外链还是不清楚,还得查看原图片直链

    回复/Reply
    1. @Mr.Lee

      改模板好麻烦啊......

      回复/Reply
  5. Z

    反代对于节点服务器的流量,是不是等于双倍消耗?

    回复/Reply
    1. @Z

      是的, 但是很多服务器只计算出口流量.

      回复/Reply
  6. 文章已转载,这个搭建了一个。效果还是有点可以。

    回复/Reply
  7. 使徒行者

    感谢博主的教程,学习了很多。
    现在有几个问题想请教博主:
    ①反向代理就是因为OVH的站点A打开太慢了,所以要用个访问速度较好的VPS(站点B)作为前端打开网页,是吗?
    ②如果是这样的话,为什么不直接用这个访问速度较好的VPS(站点B)建站呢?
    ③如果因为这个速度较好的VPS(站点B)不抗D,反代的话依然可能会打到生活不能自理啊?
    比如直接打瘫痪了,那么OVH的站点A不是仍会无法访问或者访问很慢吗?
    萌新求解,非常感谢!

    回复/Reply
    1. @使徒行者

      反代有个很重要的原因就是为了保护源站点不被泄露, 就算反代节点被攻击, 那么节点还可以随时切换, 但是如果源站点被攻击,那么数据可不是那么方便切换了.

      回复/Reply
      1. 使徒行者
        @admin

        明白了,就是说可以多建几个节点,一来分担主站的压力,二来更好的保护主站不容易下线。
        另外,这样反代之后,主站上安装的统计代码比如google和百度的统计,还能正常统计到每个访客信息吗?
        谢谢!

        回复/Reply
  8. 楼主你好,你这种CDN方式,到头来还是需要备案的吧?

    回复/Reply
    1. @路飞

      节点如果在国内当然要备案了

      回复/Reply