产品服务AMH 免费服务器主机面板SSL证书 免费SSL证书申请 担保单 免费安全、零费率交易平台编程助手免费智能写代码、翻译AMYSQL 免费MySQL管理工具

AMH 社区首页

 AMH社区 - 开放自由有价值的社区

[综合话题] AMH3.2 安装防CC攻击PHP脚本模块 limit_req2_nginx_module-1.2

amysql
创始人
16530.81 价值分

amysql 发表于 2013-05-26 22:23:05
适用版本 AMH3.1 & AMH3.2
-----------------------------------------
模块版本名称: limit_req2_nginx_module-1.2
模块发布时间: 2013-05-26
模块描述:
引用:
nginx模块系列 - nginx限制请求处理频率的模块。典型应用:限制来自单个IP地址的请求处理频率。 限制的方法是通过一种“漏桶”的方法——固定每秒处理的请求数,推迟过多的请求处理。

模块脚本开发者:Zeraba
开发者网站:http://www.lsanday.com/


1、面板线上下载&安装:
AMH » Module » 下载模块 » 搜索 limit_req2_nginx_module-1.2 下载。
回到模块管理列表点击安装即可。


2、或使用ssh命令下载&安装:
amh module download limit_req2_nginx_module-1.2;
amh module limit_req2_nginx_module-1.2 install;


--------------
目前1.0与1.1版本已下架。
在使用1.0或是1.1的用户请下载安装升级。
直接在面板搜索 limit_req2_nginx_module-1.2 下载安装,会直接升级。(旧版本会自动卸载删除)


1.2新版本更新了1.0与1.1版本存在的问题。
1) limit_req2_nginx_module1.0与1.1版本会与AMProxy-1.01不兼容。
2) 安装后主机停止后,卸载模块主机的limit_req2配置未完全移除。amh nginx restart Nginx出错。
3) 更改cc.conf 444非标准状态码为403。

其它细节,请查看开发者模块开发记录:
http://amysql.com/bbs/post-397-1-1.htm

--------------
按住F5键,测试效果:










附、下载limit_req2_nginx_module-1.2模块开发脚本:
http://amysql.com/file/AMH/3.2/modules/limit_req2_nginx_module-1.2.module.tar.gz


2013-05-26 22:23:05 1

AMH面板 - 好用高效低占用、安全可靠极稳定

zzzzzza
银牌会员
1824.00 价值分

本帖最后由 zzzzzza 于 2013-5-26 23:08 编辑

好简洁的shell写法 学习了~!
不过upgrade里 编译nginx那段如果在AMHProxy1.01已安装的时候被执行
AMHProxy1.01就要先卸载再安装一变咯

如果未来nginx 第三方模块多了 就麻烦了 要不给nginx的模块的InstallComplete都改下名字 比如 InstallComplete_nginx
upgrade后 也删除所有模块下的InstallComplete_nginx 这样后台再装下倒是也没事
  支持 (0分)  反对 (0分)
回复  2013-05-26 23:03:05 2

amysql
创始人
16530.81 价值分

引用:
zzzzzza 发表于 2013-5-26 23:03
好简洁的shell写法 学习了~!
不过upgrade里 编译nginx那段如果在AMHProxy1.01已安装的时候被执行
AMHProxy ...

upgrade那段是没sbin/nginx文件的情况或是Nginx配置没有prefix=/usr/local/nginx参数(参数估计都丢失了)的时候才编译默认参数一次。

----
如果未来nginx 第三方模块多了 就麻烦了 要不给nginx的模块的InstallComplete都改下名字 比如 InstallComplete_nginx
upgrade后 也删除所有模块下的InstallComplete_nginx 这样后台再装下倒是也没事

这个怎么理解?
  支持 (0分)  反对 (0分)
回复  2013-05-26 23:27:58 3

zzzzzza
银牌会员
1824.00 价值分

引用:
amysql 发表于 2013-5-26 23:27
upgrade那段是没sbin/nginx文件的情况或是Nginx配置没有prefix=/usr/local/nginx参数(参数估计都丢失了)的 ...


假设生成机安装有 nginx 第三方模块若干 A B C D
已经安装了 A B 模块 想安装 C 模块
在安装C的时候 因为日常使用的时候 sbin/nginx丢失
如果C也是按照这个脚本里的逻辑 会编译默认参数
之后C模块被安装 A B两个模块之前已安装但是编译C的时候 参数丢失了
但是在module里 A B还是被检测到已安装
D模块没有问题

所以假设所有的nginx第三方模块都以InstallComplete_nginx命名
upgrade 里 编译完成之后 遍历modules文件夹 删除 已有的 InstallComplete_nginx
在C模块文件夹下新建 InstallComplete_nginx 完成nginx还原操作
  支持 (0分)  反对 (0分)
回复  2013-05-27 00:30:15 4

amysql
创始人
16530.81 价值分

引用:
zzzzzza 发表于 2013-5-27 00:30
假设生成机安装有 nginx 第三方模块若干 A B C D
已经安装了 A B 模块 想安装 C 模块
在安装C的时 ...

以后有很多Nginx第三方模块安装,脚本像这里upgrade这样写那是不行拉(Nginx之前已安装的模块配置参数没补上)。
这个脚本只是考虑了之前limit_req2_nginx_module-1.0|1.1的问题。

limit_req2_nginx_module-1.0|1.1发生错误有两种情况:
1) 用户先前安装了AMProxy1.01,再安装limit_req2_nginx_module-1.0|1.1(这时是正常),然后卸载AMProxy1.01,将出错(Nginx已编译失败)。
这样的情况就不用考虑AMProxy1.01了,用户都卸载了无影响。

2) 用户先是安装limit_req2_nginx_module-1.0|1.1(这里是正常),然后安装AMProxy1.01,这时同样出错(Nginx已编译失败)。
这样的情况也不用考虑AMProxy1.01了。AMProxy1.01都没安装成功也没方法使用。

limit_req2_nginx_module-1.2版本对于上面两种情况,或是新装用户,安装是没问题的。

-----

你那假设我明白啊,前提是要sbin/nginx已丢失。(这是问题的根源啊)
如果正常的话就不会有这样的情况发生。
以后我们写安装Nginx第三方模块应用脚本时,应该做好新的 ./objs/nginx 的判断(上帖子你也提到),
避免编译失败而误删sbin/nginx,就会避免以上的情况发生了。


最后,下面你说都以InstallComplete_nginx 命名的用意我还是没看明白……
  支持 (0分)  反对 (0分)
回复  2013-05-27 03:19:56 5

zzzzzza
银牌会员
1824.00 价值分

引用:
amysql 发表于 2013-5-27 03:19
以后有很多Nginx第三方模块安装,脚本像这里upgrade这样写那是不行拉(Nginx之前已安装的模块配置参数没补 ...


对啊 我们的假设都是/sbin/nginx丢失或者 make失败后没有做判断 直接对 /sbin/nginx 进行处理 假设 /sbin/nginx丢失 upgrade就会编译nginx到原始状态
这样一来 对于已经安装了amyproxy的用户 并且 /sbin/nginx丢失的 就会出现面板上amyproxy显示已安装 但是反代失效 nginx停止后无法启动
也许可以在upgrade里再做个判断 判断amyproxy是否以前安装过 安装过就带上它的参数 没有就初始化

但是这只是两个nginx的模块 以后如果有更多 判断就不好写了
但是类似upgrade的判断也是要有的
一种方案是对于nginx的模块已安转判断与其他amh模块区分开 upgrade后对已安装的nginx模块判断文件进行删除处理 之后只需要才面板中重新编译
但是我觉得 每次安装nginx模块成功后都在某个文件中保存参数 这样upgrade就可以聪明的进行编译了

两种方案 第一种编译次数多 但是可以做到对nginx第三方模块的全局识别 第二种编译次数少 但是需要更改还原脚本了 还原也读取这个参数文件进行编译
  支持 (0分)  反对 (0分)
回复  2013-05-27 08:41:13 6

amysql
创始人
16530.81 价值分

引用:
zzzzzza 发表于 2013-5-27 08:41
对啊 我们的假设都是/sbin/nginx丢失或者 make失败后没有做判断 直接对 /sbin/nginx 进行处理 假设 /sbi ...

明白了。首先是要避免误删sbin/nginx文件。如果误删这相对来说是比较大的问题了。
如果万一sbin/nginx丢失的情况,像目前这样以后想恢复已安装的模块确实是没方法,因为没保存到第三方模块,编译需要--add-module的参数。

像你说的这样是文件形式保存--add-module参数,
要不这样吧,如果用到第三方Nginx模块就在amh_module_info中多写一个属性吧。
AMH-MoudleNginxConfigure: --add-module=/usr/local/limit_req2_nginx_module

amh module limit_req2_nginx_module-1.2 info 就可以取到参数值。
另外,如果在每个模块都做sbin/nginx判断,并写修复代码就有些繁琐了,
可以另写一脚本模块专做这方面的工作,其它模块在安装出现异常的情况,再转移使用这个模块编译恢复sbin/nginx。


  支持 (0分)  反对 (0分)
回复  2013-05-27 14:13:16 7

acclib
铜牌会员
903.00 价值分

我试了下没显示楼主说的页面,显示的是404.然后几秒后恢复正常。

我的网址 http://t.cn/zHIIvgh

应该是没成功吧,我已经重载nginx和php了
  支持 (0分)  反对 (0分)
回复  2013-05-27 14:45:12 8

amysql
创始人
16530.81 价值分

引用:
acclib 发表于 2013-5-27 14:45
我试了下没显示楼主说的页面,显示的是404.然后几秒后恢复正常。

我的网址 http://t.cn/zHIIvgh

没生效?

/usr/local/nginx/sbin/nginx -V

或ssh重启Nginx看看。
amh nginx restart
  支持 (0分)  反对 (0分)
回复  2013-05-27 15:14:05 9

acclib
铜牌会员
903.00 价值分

还是这样,不知道和主机有问题没,我用的阿里,带云盾.
  支持 (0分)  反对 (0分)
回复  2013-05-27 15:56:46 10
 1 2 3 4 >  (总4页)
AMH社区列表
用户服务中心