VPS侦探论坛

 找回密码
 注册
查看: 4477|回复: 4

关于nginx模块限制问题

[复制链接]
发表于 2016-1-2 16:28:22 | 显示全部楼层 |阅读模式

lnmp1.2,/usr/local/nginx/sbin/nginx -V下看到
  1. nginx version: nginx/1.8.0
  2. built by gcc 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC)
  3. built with OpenSSL 1.0.1e-fips 11 Feb 2013
  4. TLS SNI support enabled
  5. configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_spdy_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module
复制代码
这里面好像没有Http_Limit_Req_Module和Http_Limit_Zone_Module这两个模块吧?
同时看了这个帖子 http://www.bzfshop.net/article/176.html
网站安全配置(Nginx)防止网站被攻击(包括使用了CDN加速之后的配置方法)不知1.8的有没默认编译了这两个所需要的模块呢?
  1. HttpLimitZoneModule    限制同时并发访问的数量
  2. HttpLimitReqModule     限制访问数据,每秒内最多几个请求
复制代码

Nginx 限制单个IP的并发连接数及对每个连接速度(限速)
  1. #根据用户的真实 IP 做连接限制
  2. ## 这里取得原始用户的IP地址
  3. map $http_x_forwarded_for $clientRealIp {
  4.         "" $remote_addr;
  5.         ~^(?P[0-9\.]+),?.*$ $firstAddr;
  6. }
  7. ## 针对原始用户 IP 地址做限制
  8. limit_conn_zone $clientRealIp zone=TotalConnLimitZone:20m ;
  9. limit_conn TotalConnLimitZone 50;
  10. limit_conn_log_level notice;
  11. ## 针对原始用户 IP 地址做限制
  12. limit_req_zone $clientRealIp zone=ConnLimitZone:20m rate=10r/s;
  13. #limit_req zone=ConnLimitZone burst=10 nodelay;
  14. limit_req_log_level notice;
  15. ## 具体服务器配置
  16. server {
  17.         listen 80;
  18.         location ~ \.php$ {
  19.         ## 最多 5 个排队, 由于每秒处理 10 个请求 + 5个排队,你一秒最多发送 15 个请求过来,再多就直接返回 503 错误给你了
  20.                 limit_req zone=ConnLimitZone burst=5 nodelay;
  21.                 fastcgi_pass 127.0.0.1:9000;
  22.                 fastcgi_index index.php;
  23.                 include fastcgi_params;
  24.         }
  25. }
复制代码
但在 https://bbs.vpser.net/thread-3017-1-1.html
中却可以用到这个功能
#limit_conn_zone $binary_remote_addr zone=perip:10m;去除了#号后,是不是就可以了?
我是一M带宽,这样配置100K?
limit_conn perip 10;limit_rate 100k;

[ 本帖最后由 kkfgef 于 2016-1-2 16:29 编辑 ]
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
发表于 2016-1-2 19:41:17 | 显示全部楼层


这是默认模块不需要单独启用或编译

https://bbs.vpser.net/thread-3017-1-1.html 上有具体设置的说明,这个不是完整的限制带宽的功能,只是限制并发和单个连接的速度。文档末尾有举例说明
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
 楼主| 发表于 2016-1-3 15:07:29 | 显示全部楼层

原帖由 licess 于 2016-1-2 19:41 发表
这是默认模块不需要单独启用或编译

https://bbs.vpser.net/thread-3017-1-1.html 上有具体设置的说明,这个不是完整的限制带宽的功能,只是限制并发和单个连接的速度。文档末尾有举例说明 ...

我的nginx1.8经过这帖子后修改了一下配置:
在 limit_conn_zone $binary_remote_addr zone=perip:10m; 这一行,也把#号给删除了

  1.         root  /home/wwwroot/try;
  2.         error_page 404 /404.html;
  3.         error_page 500 502 503 504 /50x.html;
  4. #这里添加了
  5.        limit_conn perip 10;limit_rate 100k;
复制代码

可是,我在做压力测试的时候,还是不行呢?
从后台日志看到,一秒才不到20个日志写入
121.43.154.199 - - [03/Jan/2016:14:57:22 +0800] "GET / HTTP/1.1" 200 2085 "-" "PTS-HTTP-CLIENT" --
121.43.154.199 - - [03/Jan/2016:14:57:22 +0800] "GET / HTTP/1.1" 200 2085 "-" "PTS-HTTP-CLIENT" --
121.43.154.199 - - [03/Jan/2016:14:57:22 +0800] "GET / HTTP/1.1" 200 2085 "-" "PTS-HTTP-CLIENT" --
121.43.154.199 - - [03/Jan/2016:14:57:22 +0800] "GET / HTTP/1.1" 200 2085 "-" "PTS-HTTP-CLIENT" --
121.43.154.199 - - [03/Jan/2016:14:57:22 +0800] "GET / HTTP/1.1" 200 2085 "-" "PTS-HTTP-CLIENT" --
这样的日志了,从浏览器打开网站很是卡而已。像这样的CC攻击如何配置好?
美国VPS推荐: 遨游主机LinodeLOCVPS主机云搬瓦工80VPSVultr美国VPS主机中国VPS推荐: 阿里云腾讯云。LNMP付费服务(代装/问题排查)QQ 503228080
 楼主| 发表于 2016-1-3 15:09:23 | 显示全部楼层



期间,边SHH和SFTP这些都很难连接!
Linux下Nginx+MySQL+PHP自动安装工具:https://lnmp.org
发表于 2016-1-4 09:24:00 | 显示全部楼层

limit_rate为限速为 100KB/秒。
限制每个连接速度为100K,此限制是针对单个线程,比如,我用IE下载是100K,当用迅雷时它会占用2个线程,所以迅雷下载速度为200K,如果单个IP的并发数设置为10,则多线程下载的话速度可以达到100K×10。


你就只有1兆的带宽,理论上也就是最大才能到128KB/秒,你这一压力过去带宽就耗尽了,配置低的话负载应该很快就上去了

防cc建议还是找专业的

军哥运维代购:http://shop63846532.taobao.com/

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|VPS侦探 ( 鲁ICP备16040043号-1 )

GMT+8, 2024-9-28 19:19 , Processed in 0.026510 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表