宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速

上一篇文章介绍为某省单独设置解析线路,思考怎么防止CDN被刷,以及避免拦截IP网段导致误拦截正常访客。思来想去,决定在这个省单独部署一台服务器,专门做反向代理和静态文件缓存,既能防刷又能减少回源压力,一举两得!但文章并没有提及如何创建一个单独服务器节点,本文教会你,如何在作为节点的服务器宝塔面板中配置效果与CDN一致的服务。

CDN被刷,最大的原罪就是源站的WAF无法得知CDN在被刷,因为它无法回源!

为了节点防刷,所以你需要一台高防大宽带的服务器,配置WAF,并且距离省位置要近。恶意请求基本都是针对图片、CSS、JS 这些静态资源,把静态资源缓存到节点服务器上,不影响源站,也避免高额CDN账单。

图片[1]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

本文要配合下文食用:

初始化Nginx缓存空间

先初始化Nginx缓存空间,在nginx设置中的配置文件http块里加上这段配置:

    # 定义缓存路径和缓存区域
    proxy_cache_path /www/wwwroot/wxsnotecache levels=1:2 keys_zone=wxsnote_cache:50m inactive=60m max_size=1g;
    
    # 定义缓存键规则
    proxy_cache_key "$scheme$request_method$host$request_uri";
  1. proxy_cache_path:此指令的作用是设定Nginx缓存内容的存储位置以及相关参数。
  2. /www/wwwroot/wxsnotecache:这里指定了缓存文件在服务器文件系统中的存放路径,可自定义。
  3. levels=1:2:该参数控制缓存目录的层级结构。具体来说,会生成一级目录(使用1个字符)和二级目录(使用2个字符),这样的结构有助于提升文件系统的性能。
  4. keys_zone=wxsnote_cache:50m:创建了一个名为wxsnote_cache的共享内存区域,其大小为50MB。这个区域的用途是存储缓存键和元数据,可自定义。
  5. inactive=60m:它定义了缓存项的非活动超时时间。也就是说,如果在 60 分钟内缓存项没有被访问,就会被自动删除,即便它还没有过期,你可以设置为更大的值,支持h就是小时。
  6. max_size=1g:对硬盘上缓存数据的最大容量进行限制,当缓存数据达到1GB时,会按照LRU(最近最少使用)算法删除旧的缓存,依据你网站的大小设置,支持m就是MB,最大10GB。
图片[2]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

创建网站及配置反向代理

在节点创建一个空白站点,无需PHP和MySQL,但域名要与原域名一致

图片[3]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

开启反向代理

图片[4]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

修改配置

图片[5]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

替换配置文件

图片[6]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

设置SSL证书

把源站得复制过来就行

图片[7]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

节点设置hosts

直接访问源站,不走DNS解析

图片[8]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

添加hosts,域名以及源站服务器地址

图片[9]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

验证效果

配置完得验证下缓存有没有生效。可以看看响应头里的X-Cache-Status字段,如果显示HIT就是命中缓存了,MISS就是首次访问没命中。

图片[10]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

或者,如果是PHP网站,添加一个文件,放入代码并访问

<?php
echo "Remote Addr: " . $_SERVER['REMOTE_ADDR'] . "<br>";
echo "X-Forwarded-For: " . $_SERVER['HTTP_X_FORWARDED_FOR'] . "<br>";
?>
图片[11]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

设置WAF防止拦截节点

源站服务器设置WAF,先复刻源站或CDN WAF的拦截规则,拦截指定省的IP段就不必了。毕竟我们就是为了防止访客被误拦截。然后开启CDN选项(网站日志中显示节点IP,但WAF和统计插件显示真实IP,拦截和统计都不会拦截你的节点,当然,最好是在节点就拦截住)

图片[12]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

除了WAF,你还需让网站解析IP地址,否则你的网站日志会显示节点IP地址

图片[13]-宝塔Nginx反向代理实现类似CDN节点的静态文件缓存加速-王先生笔记

结语

这样就可以避免高额CDN账单和防止拦截网段导致正常访客无法访问了,并且依旧距离省近,加速静态文件,视为一个CDN节点。

你可以设置CC限制,跳转验证5秒盾(你可以使用WAF面板,如雷池waf,宝塔云waf,而不是宝塔面板),静态资源请求速度与宽带,这里就不展示了。

评论后可接收该文章的更新邮箱通知
友情赞助

如果你喜欢我的内容,可以赞助我哦!你的一点点心意,是我不断前进的动力!

原文链接(非王先生笔记发布均为盗版):https://wxsnote.cn/6289.html

温馨提示: 本文最后更新于2026-01-15 17:23:54,某些文章具有时效性,若有错误或已失效,请在下方留言或加入QQ群: 399019539 联系群主反馈。注意一些链接无法访问可能是你网络的原因,如Github,并非资源地址失效。
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
相关推荐
评论 共3条

请登录后发表评论

    请登录后查看评论内容

王先生笔记