CC攻击防御的一种方法
吐槽
以前老有憨批C本站。谁让博主穷得只能靠白女票资源来维持网站运行这样子。压根没财力去上高防机器。 财力不行折腾来凑,硬件防火墙肯定是不可能的,只能用软件防火墙这样子维持生活。 今天也给大家介绍一个最简单也最有效的方法:Verynginx
Verynginx
VeryNginx 是一个功能强大而对人类友好的 Nginx 扩展程序。基于 lua_nginx_module(openrestry) 开发,实现了高级的防火墙、访问统计和其他的一些功能。 集成在 Nginx 中运行,扩展了 Nginx 本身的功能,并提供了友好的 Web 交互界面。 如果运行环境不是Nginx到这就可以关闭了。
注意
安装之前肯定需要有Nginx环境的,如果没有也可以自行安装。
VeryNginx使用了lua-nginx-module模块,需要包含该模块才能正常使用。
如果你不知道是否安装了此模块可以使用Nginx -V
查看。
没有此模块的话这里就不讲如何安装了,可以自行百度一下。
开始
拉取Verynginx的项目文件和安装
git clone https://github.com/alexazhou/VeryNginx.git
cd VeryNginx
python install.py install verynginx
cd /opt
chown -R www:www verynginx/
如果出现-bash: git: command not found
yum -y install git #Centos
apt -y install git #Dabian/Ubuntu
编辑Nginx主配置文件
vi /www/server/nginx/conf/nginx.conf #删库塔路径
vi /etc/nginx/nginx.conf #软件包默认路径
以下配置放在http配置块外部就是http{}
的外面
include /opt/verynginx/verynginx/nginx_conf/in_external.conf;
以下配置放在http配置块内部就是http{}
的里面
include /opt/verynginx/verynginx/nginx_conf/in_http_block.conf;
以下配置放在网站配置内部。如果有多个网站都需要将下面配置放在该网站的配置文件内。 注意是server{}内部。
include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;
测试Nginx是否正常
nginx -t
没问题的话重启nginx
service nginx restart #Centos6
systemctl restart nginx #Centos7/Dabian/Ubuntu
接下来访问你的域名+vn/index_zh.index 默认管理员账号密码:verynginx 如果打不开可以看一下是不是开了伪静态或者其他的玩意,暂时关掉就可以正常访问了。
配置防C
配置-自定义动作-浏览器校验-添加规则 开启打勾,JavaScript打勾点击添加
verynginx 保存配置
verynginx 配置完成
测试效果
最近时间比较紧暂时没法测试。 但是可以告诉你们结论 理论上是无限防C,但是也会有瓶颈就是被C的时候Nginx会吃大量CPU但是数据库和PHP不会介入。 可以理解为C的是静态网页。 带宽也是瓶颈,如果你带宽小一下就被占满了,就算服务器没挂掉网站也访问不了。 如果你的CPU够强劲,带宽足够大,是能抗住的。
副作用
开启防C后所有爬虫都无法访问,这点需要注意。建议在被C的时候开启比较好。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Mac系统R语言升级后无法加载包报错 package or namespace load failed in dyn.load
- 如何从xml文件创建R语言数据框dataframe
- Matlab马尔可夫链蒙特卡罗法(MCMC)估计随机波动率(SV) 模型
- 如何从xml文件创建R语言数据框dataframe
- R语言POT超阈值模型和极值理论EVT分析
- R语言使用灰色关联分析(Grey Relation Analysis,GRA)中国经济社会发展指标
- R语言中的模拟过程和离散化:泊松过程和维纳过程
- R语言Lee-Carter模型对年死亡率建模预测预期寿命
- R语言有极值(EVT)依赖结构的马尔可夫链(MC)对洪水极值分析
- RxSwift 封装 CoreBluetooth(一) 配置
- Golang 操作Excel文件
- 腾讯云TKE-搭建prometheus监控(一)
- Android开发中ProgressDialog简单用法示例
- Android实现拍照及图片裁剪(6.0以上权限处理及7.0以上文件管理)
- Android仿微信调用第三方地图应用导航(高德、百度、腾讯)