我这个博客是大三的时候搭建的,而我现在已经研一,差不多有 2 年的时间了,但我一直没有怎么看过 nginx 的日志。

我本以为搬迁到腾讯云的服务器上后,网站的访问速度会有很大提升,结果反而降低了很多,这一方面是因为 30M 的带宽一下子降到了 3M,另一方面,貌似是我的服务器被打了。每次重启 PHP 和 Mysql 之后,都会保持一段时间比较快的响应速度,但过一会儿之后又会慢下来;起初我还以为是 PHP-fpm 的问题,多次设置还是无果,直到我查看了 Nginx 的日志。

我这个服务器 1C1G3M,放一个日IP300 上下的 WordPress 和只有几个人访问的苹果cms,应该说不成问题,但是负载却经常飙到百分百,日志中一大堆莫名其妙的 POST 请求,特别是苹果cms,几个查找请求并发 Mysql 就炸了。

好在之前用来做 CDN 的 Cloudflare 可以防 CC。

先说一下,我虽然在 Cloudflare 官网接入了 CDN,用的却是笨牛网的控制面板,虽然最初的目的是自定义节点,但坚持使用却是因为友好的中文面板。

1 UA 防火墙

我的 WordPress 日志里,有很多不常见的网站 spider,其实我并不希望被诸如 Yandex 之类的搜索引擎收录,所以就在这里屏蔽了这些搜索引擎蜘蛛。

2 防火墙规则

这个可以说是神级应用了。UA防火墙只能填写10个,所以如果你要屏蔽带规则的UA的话,最好在这个里面写。

2.1 屏蔽不常用请求头

鉴于世界上绝大多数的浏览器都会以 Mozilla 开头,所以我干脆设定了“不含有 Mozilla 的请求头全部需要验证码”这样的霸王条款,虽然会误打一些正常的请求,但却有效屏蔽了默认的 python、go等爬虫。

2.2 拒绝访问含有 php 的链接

我觉得我的博客文章里面,没有含有 php 的固定链接,所以直接屏蔽了所有含有 php 的链接请求,虽然我自己登录后台的时候也要输入一下验证码,但是可以杀掉大部分 admin-ajax.php 之类的 cc 攻击。