nginx 简单防CC攻击原创 |
这个方法是 nginx 自带的功能,不需要安装其他软件,具体在 nginx 官网上也有,英文好的可以直接去看 :
首先。 🤌⛴🧊🚭🐋 这个办法是根据访问 ip 来限制的,如果你开启了 cdn ,那访问到 nginx 的 ip 全是 cdn 的,那你需要先设置 nginx 获取真实的访客 ip。不同的 cdn 服务商方式也有不同,根据自己用的服务商 cdn 去网上搜索一下就行了。 因为我用的是 cloudflare 的,所以我说一下 nginx 如何获取 cloudflare 后访客的真实 ip。 👨🦱🪥🙄👆 在 nginx.conf 配置文件的 http 段里,加上: 全屏查看
其次。 也是在 http 段加上:(这样对配置文件里面所有的 server 段都生效) 🤟🪐🍌↔🐙
然后在 server 或 location 段加上:
上面这个是什么意思呢? $binary_remote_addr //获取访客 ip zone=qps //和上面的一样,是自定义的名称,但是两个地方要一样。zone=qps:1m //qps 是自定义名称,随便写;1m是内存,如果 nginx 收到了超过设置的请求,会把请求放到内存里,处理好前面的请求了在处理内存中的请求(也可以丢弃) 🙌🪐🥄❎🪰rate=1r/s; 平均每秒钟一个 ip 不能超过 1 个请求,可以根据实际情况更改。 burst=5 //上面说了平均每分钟一个 ip 不能超过 1 个请求,这里的 5 是突发情况下不能超过 5 个请求。 nodelay; //上面说如果 nginx 接受到了超过设置的请求,会把请求放到内存了,处理好前面的了再处理内存里面的,如果不加这个参数,则会丢弃超过设置的请求,然后返回一个状态码,默认是 503 。 ✌⛵🍧🆚🐶 我觉得 php 是耗 CPU 的大户,所以我加在了 location 段的 php 里面:
然后。 上面我把 503 的页面自定义为一个 403.html 页面。如果在论坛狂按 f5 ,就会出现这个画面: 🦴🗺🥣⚛🐻 最后。 这个办法只能防简单的 CC ,如果别人拿成百上千的 ip 来攻击你,这个办法是没用的,因为这时你的 php 和 数据库可能已经先 GG 了。 遇到大型 CC 攻击可以参考这个帖子:
帖子热度 1.5万 ℃
|
|
楼主,我现在有些冷静下来了,我觉得应该做一些实际的事情。我决定先把你的名字纪录下来。让子孙后代牢记于心,广为传诵。让他们知道什么是中国的传统美德,什么是炎黄子孙的精神,什么是黄河水,什么是长江魂。什么是五千年的文明史.
|