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

AMH 社区首页

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

[综合话题] AMH模块-limit_req2_nginx_module更新记录专贴-最后一次更新2013-05-26

zzzzzza
银牌会员
1824.00 价值分

zzzzzza 发表于 2013-05-21 19:28:39
本帖最后由 zzzzzza 于 2013-5-26 15:54 编辑

*********************************2012-05-26更新******************************************
[attach]343[/attach]

之前的脚本因为没有考虑多个nginx第三方模块同时安装下的逻辑问题
请暂时先不要用与生产 感谢认真负责的@Amysql
新的脚本已经解决多个nginx模块共存的问题,并且修正了安装和卸载的逻辑问题
现在的脚本逻辑 只要你面板可以打开 安装和卸载模块能避免以下几种倒腾
1.倒腾nginx的编译 XXXXXXCCCCCOOOO 但是没有编译通过 却删除了 /usr/local/nginx/sbin/nginx 这个文件
2.经常手动编译 但是某次忘记先 nginx -V 获取参数

因为暂时只遇到了这两种 面板可以打开 但是因为安装本模块导致面板打不开的情况,暂时修正这两种

当然,本模块已经解决和AMHProxy的共存问题,不倒腾模块的兼容性和@Amysql发布的应该想同了
欢迎反馈 安装本模块后面板无法启动的案例

*******************************2012-05-25更新******************************************
[attach]338[/attach]
新参数测试地址: http://designow.info http://mineegg.com
前一个网址是jjabc的服务器 后一个是国内服务器 后者效果很明显 前者因为网络延迟的问题 不太明显
请勿DD 如果需要看探针 ping下这两个域名 后面加上 :8888/tz.php


limit_req2_nginx_module-1.1
模块更新记录
因为首个版本没有理解模块的相关参数,默认参数很不合理,建议更新到1.1
1.更新防CC默认参数 Thanks @Lazyzhu
2.修正@amysql 老大提到的安装完未载入模块的问题
3.提高模块安装的兼容性 1.0版本 1.0版本对nginx.conf的处理,如果client_max_body_size 这一行有过修改 会漏处理

目前的参数:
limit_req2_zone $binary_remote_addr $request_uri zone=one:3m rate=2r/s;
limit_req2_zone $binary_remote_addr $uri zone=two:3m rate=20r/s;
limit_req2_zone $uri zone=three:5m rate=200r/s;
three 做 return 444 处理
two rewrite refresh.html

这个模块现在的参数对一些有过多循环或者页面链接过多的vps和程序不太适合
php 有过多循环 请修改20->40 200->500
页面有过多链接 20->50
修改 /uar/local/nginx/conf/nginx.conf
修改后 amh nginx reload 下


下个版本的更新内容:
1.修正卸载上的一个逻辑错误(如果卸载已安装这个模块的amh面板 会多余的编译nginx)--其实已经加了一个判断了
2.通过一些简单判断,智能修改好模块参数,不同vps 不同页面 网络等 参数最好还是自定义
由于相关的文档有限,暂时只能我慢慢一点点尝试
3.可能会支持在面板上修改参数

@Amysql

咱们的卸载脚本是先卸载模块后删除nginx php等相关文件的
后期如果nginx模块出的多,卸载amh要编译好几次nginx了 要不咱先删nginx php mysql目录 后删模块?
其实目前来看直接删/root/amh/modules 目录就好了 不过考虑到以后某些模块的卸载不仅仅要删除这些 留下amh module uninstall也好,比如以后也许会有csf module v_pn module什么的


*****************************2012-05-23***************************更新

[attach]329[/attach]
附件已更新
5.23 22:35
改正了 对已存在的空间的 nginx 配置文件的修改
改正了 模块所带 html 模板的复制方式
略增大漏桶 2-->3
去除git方式安装模块
使用更快的zip方式

手动安装方法
解压文件到 /root/amh/modules 文件夹

确保 /root/amh/modules/limit_req2_nginx_module/
文件夹是是三个文件 包括 AMHScript cc.conf refresh.html三个文件

感谢@amysql 的指导 话说 AMH面板团队到底有几个人哪 @smyz ?
目前模块参数 刷新3+ 次 rewrite 到html
3+ 次后 进入漏桶中 如果漏桶没存满 页面还是可以正常的
但是漏桶存满了 就返回 400

(这个理解如果有误 请指正)

目前的测试机在Vegas 联通用户 效果不佳 应该是网络延迟和丢包
这个模块理论上需要考虑ping 丢包 vps性能 php页面等综合方式
未来会增加参数的自定义和算法参考

测试环境 :
JJABC vps run centos 5.X xen
Paulvps vps run centos 6 openvz
Ramnode vps run debian 6 kvm

另 电信通等国内vps 还是一样 先改dns后再安装

********************************分割线**********************************************

***************2012-05-22*****更新
模块测试版已开发完成
http://72.46.154.19:8888/index.php?c=module&a=module_list&page=3

amh
amh_password

用的是jjabc提供的vps
测试防恶意刷新地址
http://designow.info/tz.php

暂时固化了limit_req2_nginx_module的参数,等以后升级下模块,增加参数自定义
测试方式 F5 3+ 探针
当然要是你手快 也许可以看到 断开连接

该测试版limit_req2_nginx_module 使用到了git debian 6 centos 6 都可以简单安装
centos 5.X debain 5.X 未知 暂时是编译安装
等周末弄下系统的适配 就可以使用了
***************分割线*****************


模块具体功能描述:limit_req2_nginx_module nginx模块系列,限制请求处理频率的模块。典型应用:限制来自单个IP地址的请求处理频率
完成开发需要的时间:一周
模块完成提交时间: 2013-05-26

这个模块也是nginx使用频率较高的模块
目前已完成脚本的install部分(参考的反代模块)
正在完成status uninstall的部分

有个问题想请教,amh面板中php进程数是如何读取的?
这个模块一些参数也许可以考虑集成到amh的php配置中
首个版本暂时固化参数

初定两个判断规则
one rewrite xxx.html
two return 444

我也是小菜 之前未有太多接触这个模块的配置
目前博客用的就是两条规则
效果不错,单IP的恶意刷新可以解决
多ip的访问暂未解决

未来考虑:增加判断来路域名 屏蔽来路域名或者user-agent等
做个比较强大的amh模块

另:目前我的几台测试机有1台是vswap 1台swap 都是openvz
观察发现两台vswap的小鸡安装apc扩展,php会出现502 观察错误日志,是socket连接上的问题?
2013/05/19 23:10:02 [crit] 31862#0: *215 connect() to unix:/tmp/php-cgi-xxx.sock failed (2: No such file or directory) while connecting to upstream, client: 223.167.xxx.xxx, server: xxx.com, request: "GET /tz.php HTTP/1.0", upstream: "fastcgi://unix:/tmp/php-cgi-xxx.sock:", host: "xxx.com"
2013/05/20 00:09:01 [crit] 31862#0: *239 connect() to unix:/tmp/php-cgi-xxx.sock failed (2: No such file or directory) while connecting to upstream, client: 223.167.xxx.xxx, server: xxx.com, request: "GET /tz.php HTTP/1.0", upstream: "fastcgi://unix:/tmp/php-cgi-xxx.sock:", host: "xxx.com"
2013/05/20 00:09:03 [crit] 31862#0: *239 connect() to unix:/tmp/php-cgi-xxx.sock failed (2: No such file or directory) while connecting to upstream, client: 223.167.xxx.xxx, server: xxx.com, request: "GET /tz.php HTTP/1.0", upstream: "fastcgi://unix:/tmp/php-cgi-xxx.sock:", host: "xxx.com"
2013/05/20 00:09:04 [crit] 31862#0: *239 connect() to unix:/tmp/php-cgi-xxx.sock failed (2: No such file or directory) while connecting to upstream, client: 223.167.xxx.xxx, server: xxx.com, request: "GET /tz.php HTTP/1.0", upstream: "fastcgi://unix:/tmp/php-cgi-xxx.sock:", host: "xxx.com"
在swap小鸡上安装并出错,vswap小鸡上目前使用xcache中
两台小鸡都是openvz 新装amh



附件
limit_req2_nginx_module-1.0.tar.gz
limit_req2_nginx_module-1.1.tar.gz
AMHScript.zip
2013-05-21 19:28:39 1

nginx
银牌会员
1752.00 价值分

这个好,支持。:lol
  支持 (0分)  反对 (0分)
回复  2013-05-21 20:17:22 2

amysql
创始人
16530.81 价值分

amh面板中php进程数是如何读取的?
你是说虚拟主机的php-fpm进程数还是?

/usr/local/php/etc/fpm
这个目录有所有虚拟主机网站的php fpm配置文件。
http://amysql.com/bbs/post-111-1-1.htm

查看当前的php-fpm进程可以这样
ps aux | grep 'php-fpm'

后面那日志好像你跑的是探针?



-------------

楼主平台有账号了吗? 注册一账号。
发一工单,内容贴上这帖子的网址:
http://amysql.com/bbs/post-397-1-1.htm

收到确认后就为你开通主机开发使用 :D
  支持 (0分)  反对 (0分)
回复  2013-05-21 20:59:23 3

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

zzzzzza
银牌会员
1824.00 价值分

引用:
amysql 发表于 2013-5-21 20:59
amh面板中php进程数是如何读取的?
你是说虚拟主机的php-fpm进程数还是?



是每个域名对应的php进程数

amh面板 虚拟主机管理 里面那个设置php进程数的页面 似乎是读取了 /usr/local/php/etc/fpm/
目录对应的php配置文件
也可以在面板上修改进程数

这里的读取php进程和修改是怎么实现的哪?

另 平台的地址是什么啊? 没找到?

php出错的日志的确是探针 安装apc后运行探针报502 phpinfo也是如此
出现在vswap的小鸡上 这个我也不确定是什么问题 也许以后有空可以试试 如需要vswap测试机 我的buyvm可以借您
  支持 (0分)  反对 (0分)
回复  2013-05-21 21:53:04 4

amysql
创始人
16530.81 价值分

引用:
zzzzzza 发表于 2013-5-21 21:53
是每个域名对应的php进程数

amh面板 虚拟主机管理 里面那个设置php进程数的页面 似乎是读取了 /usr/loca ...

没错,面板是读主机php-fpm配置文件的各个参数。

命令:
amh ls_vhost # 主机php-fpm配置列表
amh cat_php_fpm domain.com # 配置内容

然后匹配
$php_fpm_arr = array('/pm = (.*)/', '/pm\.min_spare_servers = (.*)/', '/pm\.start_servers = (.*)/', '/pm\.max_spare_servers = (.*)/', '/pm\.max_children = (.*)/');
$php_fpm_val = array();
foreach ($php_fpm_arr as $val)
{
preg_match($val, $php_fpm_conf, $host_php_fpm);
$php_fpm_val[] = $host_php_fpm[1];
}

这是php。

修改的话有amh host edit命令。
可以看看面板主机下面的说明。

---------------

或你也可以参考下面板上面的代码。
https://amysql-amh.googlecode.com/files/amh-3.2.tar.gz

Model/hosts.php
function edit_host()
{
....
}


---------

平台地址: http://www.JJABC.com

----------

502 大多是php-fpm的问题。看进程还在么。
或你什么时候方便就pm机器我看看。

: )
  支持 (0分)  反对 (0分)
回复  2013-05-21 22:23:09 5

zzzzzza
银牌会员
1824.00 价值分

引用:
amysql 发表于 2013-5-21 22:23
没错,面板是读主机php-fpm配置文件的各个参数。

命令:


嗯 谢谢啊 面板很强大 有好多要学的

ip pm您吧 进程我记得不在了 装了apc就启动不起来
  支持 (0分)  反对 (0分)
回复  2013-05-21 22:35:32 6

amysql
创始人
16530.81 价值分

引用:
zzzzzza 发表于 2013-5-21 22:35
嗯 谢谢啊 面板很强大 有好多要学的

ip pm您吧 进程我记得不在了 装了apc就启动不起来 ...


收到。
  支持 (0分)  反对 (0分)
回复  2013-05-21 22:47:58 7

acclib
铜牌会员
903.00 价值分

支持楼主。。。不懂技术。。。纯支持~
  支持 (0分)  反对 (0分)
回复  2013-05-22 10:30:12 8

zzzzzza
银牌会员
1824.00 价值分

已完成测试版
欢迎测试
  支持 (0分)  反对 (0分)
回复  2013-05-22 20:00:46 9

amysql
创始人
16530.81 价值分

你现在是不是都统一写在nginx-host.conf主机的默认配置文件?
期待可以在对应虚拟主机设置不同参数的版本。

:D
  支持 (0分)  反对 (0分)
回复  2013-05-22 20:25:01 10
 1 2 3 4 5 6 >  (总6页)
AMH社区列表
用户服务中心