【教程】使用Nginx反向代理,自建简易CDN

  • A+
所属分类:系统文档
本帖最后由 嘉树 于 2023-3-11 20:19 编辑

手上有吃灰VPS?忍受不了Cloudflare在国内的速度?网站源站对大陆连接性差,肿么办?部分闲置VPS对部分国内网络连接效果好,怎么利用起来?

也许你也想过自建CDN,但是CDN程序在安装配置上可能有些复杂,为了1ip博客不值得那么折腾。用Nginx反代或许是个更灵活的选择。

昨天在全球MJJ论坛(hostloc.com)上看到有MJJ@wanglaoji 有这样的需求,那么今天就在这写一篇简易的教学。

演示教程用到的有:宝塔面板,宝塔Nginx防火墙插件、Cloudflare和Dnspod解析和监控服务。

思路:国外走Cloudflare CDN,国内走自建CDN(如果闲置vps数量不够,或者对部分地区速度不佳,可以根据实际情况考虑国内同时使用Cloudflare和自建CDN)

第一步:在源站上搭建网站,并参考

1.如何防止源站ip泄露 https://zhuji.cool/jianzhanbiji/say-no-to-origin-ip-leak.html

2.无需iptables,设置网站ip仅对Cloudflare开放 https://zhuji.cool/jianzhanbiji/no-iptables-cloudflare.html

3.在源站的网站配置中插入下列两行代码,以获取CDN投递的ip。如果不设置,网站日志就无法记录访客的真实ip。

  1. set_real_ip_from 0.0.0.0/0;
  2. real_ip_header X-Forwarded-For;

复制代码

【教程】使用Nginx反向代理,自建简易CDN

4.可以考虑在源站上开启宝塔的Nginx防火墙插件,并在插件的站点设置中,为待加速域名配置为打开使用CDN。其他规则可以自行摸索,篇幅有限就不在这里说了。
【教程】使用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。

【教程】使用Nginx反向代理,自建简易CDN

【教程】使用Nginx反向代理,自建简易CDN

如果你按照第一步的的教程做了,那么还需要修改反向代理的配置,在配置中增加请求头。类似下图配置,请求头的内容需要和源站的设置匹配,如果请求头和源站不匹配或者CDN节点不设置请求头,那么都无法向源站IP请求资源。当然如果你嫌麻烦,你可以在源站的设置中,不设置验证请求头,但是为了更高的安全性,我建议设置自定义请求头。
【教程】使用Nginx反向代理,自建简易CDN

重复第三步,你可以配置多个VPS,然后将这些节点ip放到dnspod进行分线路解析即可。

注:如果是以静态资源为主的内容,你可以先在Cloudflare上做好缓存规则,然后用自建的CDN节点反代Cloudflare的源IP,设置方法稍微和图上的演示有些不同,反代Cloudflare的教程可以Google。如果是反代Cloudflare,那么就不需要在自建的CDN节点上配置上图的自定义请求头了,因为Cloudflare上已经设置了。但是如果反代的是Cloudflare且源站上开启了宝塔的Nginx防火墙,那么请在将自建CDN节点的ip加入源站的防火墙白名单,因为Cloudflare只会传递你的VPS的ip给源站服务器。同时,你可以在自建CDN节点上也安装宝塔防火墙插件。

第四步:在DNSPOD将节点ip加入宕机监控,可以提升网站的在线率。设置方法很简单,我就不演示了。

其他:本教程还存在很多不足,水平有限,多多见谅。如果有其他问题,可以自行Goolge查阅相关资料。

原文链接 https://zhuji.cool/jianzhanbiji/ ... xy-application.html

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin