本文转载自主机库:zhuji.cool.以下为原文:
手上有吃灰VPS?忍受不了Cloudflare在国内的速度?网站源站对大陆连接性差,肿么办?部分闲置VPS对部分国内网络连接效果好,怎么利用起来?
也许你也想过自建CDN,但是CDN程序在安装配置上可能有些复杂,为了1ip博客不值得那么折腾。
昨天在全球MJJ论坛(hostloc.com)上看到有MJJ有这样的需求,那么今天就在这写一篇简易的教学。
演示教程用到的有:宝塔面板,宝塔Nginx防火墙插件、Cloudflare和Dnspod解析和监控服务。
思路:国外走Cloudflare CDN,国内走自建CDN(如果闲置vps数量不够,或者对部分地区速度不佳,可以根据实际情况考虑国内同时使用Cloudflare和自建CDN)
第一步:在源站上搭建网站,并参考
1.如何防止源站ip泄漏,无需iptables,设置网站ip仅对Cloudflare开放
2.在源站的网站配置中插入下列两行代码,以获取CDN投递的ip。如果不设置,网站日志就无法记录访客的真实ip。
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
3.可以考虑在源站上开启宝塔的Nginx防火墙插件,并在插件的站点设置中,为待加速域名配置为打开使用CDN。其他规则可以自行摸索,篇幅有限就不在这里说了。
第二步:将待加速域名,用SAAS方式接入Cloudflare。网上很多教程,自行Google Cloudflare SAAS接入域名等关键词查看教程。
将网站dns托管到dnspod,在网站dns设置中,默认路线设置为 cname 值为 Cloudflare的源域名,比如xx.example.com。
第三步:配置用来做CDN的VPS。假设待加速域名为blog.a.com。
那么在用来做CDN的VPS创建一个名为blog.a.com。然后选择反向代理。图中的1.1.1.1修改为自己的源站ip。
如果你按照第一步的的教程做了,那么还需要修改反向代理的配置,在配置中增加请求头。类似下图配置,请求头的内容需要和源站的设置匹配,如果请求头和源站不匹配或者CDN节点不设置请求头,那么都无法向源站IP请求资源。当然如果你嫌麻烦,你可以在源站的设置中,不设置验证请求头,但是为了更高的安全性,我建议设置自定义请求头。
重复第三步,你可以配置多个VPS,然后将这些节点ip放到dnspod进行分线路解析即可。
注:如果是以静态资源为主的内容,你可以先在Cloudflare上做好缓存规则,然后用自建的CDN节点反代Cloudflare的源IP,设置方法稍微和图上的演示有些不同,反代Cloudflare的教程可以Google。如果是反代Cloudflare,那么就不需要在自建的CDN节点上配置上图的自定义请求头了,因为Cloudflare上已经设置了。但是如果反代的是Cloudflare且源站上开启了宝塔的Nginx防火墙,那么请将自建CDN节点的ip加入源站的防火墙白名单,因为Cloudflare只会传递你的VPS的ip给源站服务器。同时,你可以在自建CDN节点上也安装宝塔防火墙插件。
第四步:在DNSPOD将节点ip加入宕机监控,可以提升网站的在线率。设置方法很简单,我就不演示了。
其他:本教程还存在很多不足,水平有限,多多见谅。如果有其他问题,可以自行Goolge查阅相关资料。