• Nginx 在线新增模块与Nginx的请求限制limit_req_zone及ab压力测试工具


    一.今天给项目添加ssl证书时,发现nginx 竟然不支持ssl,经过查看,询问相关人员发现nginx编译的时候没有任何模块(历史原因)。哎。。。。

    以下 就记录下本人在线添加nginx对应模块的步骤:

    1. 1、下载对应nginx版本
    2. wget http://nginx.org/download/nginx-1.12.2.tar.gz
    3. 2、解压编译
    4.   注意:只需要./configure 和make两个步骤,不要make install
    5. tar -xf nginx-1.12.2.tar.gz
    6. ./configure --prefix=/usr/local/nginx --with-http_ssl_module
    7. make
    8. 3、备份旧版本nginx可执行文件
    9.  mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx.bak
    10. 4、复制新nginx二进制文件,进入新的nginx源码包
    11. 进入解压路径
    12. cp objs/nginx /usr/local/nginx/sbin/nginx
    13.  5、测试新版本是否正常
    14. /usr/local/nginx/sbin/nginx -t
    15. 6、nginx 平滑重启加重新启动
    16. /usr/local/nginx/sbin/nginx -s reload
    17. /usr/local/nginx/sbin/nginx -s restart
    18. 7、查看nginx对应模块是否添加成功
    19. nginx -V
    20. 特别注意:重新编译了Nginx,只是/usr/local/nginx/sbin/nginx -s reload 新增加模块不会报错,但Nginx新增的配不会生效。这个折腾了很久,一直以为配置问题。

     二.Nginx的请求限制limit_req_zone

    nginxnginxnginx可以使用ngx_http_limit_req_module模块的limit_req_zone指令进行限流访问,防止用户恶意攻击刷爆服务器。
    ngx_http_limit_req_module模块是nginx默认安装的,所以直接配置即可。

    首先,在nginx.conf文件中的http模块下配置

    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    limit_req_zone $binary_remote_addr zone=50per:10m rate=50r/s;

    1. 限制ip的访问频率
    2. 1、http设置
    3. http {
    4. #$limit_conn_zone:限制并发连接数
    5. #limit_req_zone:请求频率
    6. #$binary_remote_addr:以客户端IP进行限制
    7. #zone=one:10m:创建IP存储区大小为10M,用来存储访问频率
    8. #rate=10r/s:表示客户端的访问评率为每秒10
    9. limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    10. }
    11. 2、server设置
    12. server {
    13. listen 80;
    14. server_name localhost;
    15. location / {
    16. #限制并发数2
    17. limit_conn one1 2;
    18. #burst:如果请求的频率超过了限制域配置的值,请求处理会被延迟
    19. #nodelay:超过频率限制的请求会被延迟,直到被延迟的请求数超过了定义的阈值,这个请求会被终止,并返回503
    20. limit_req zone=one2 burst=10 nodelay;
    21. root html;
    22. index index.html index.htm;
    23. }
    24. }

    #burst用于指定最大突发请求数。许多场景下,单一地限制rate并不能满足需求,设置burst,可以延迟处理超过rate限制的请求。

    #nodelay,在突发请求数大于burst时,会丢弃掉这部分请求。因为如果只是延迟处理,就像”漏斗“,一旦上面加得快(请求),下面漏的慢(处理速度),”漏斗”总会有溢出的时候。这时,丢弃掉溢出的部分就显得很有意义了。

    三.ab压力测试工具

    yum install httpd-tools

    ab -n 50 -c 20 http://192.168.15.7/download/

    -n : 总的请求数
    -c : 同时并发的请求数

    压力测试工具输出内容详解

    1. [root@web02 ~] ab -n 50 -c 20 http://192.168.15.7/download/
    2. This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    3. Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    4. Licensed to The Apache Software Foundation, http://www.apache.org/
    5. Benchmarking 192.168.15.7 (be patient).....done
    6. Server Software: nginx/1.20.0
    7. Server Hostname: 192.168.15.7
    8. Server Port: 80
    9. Document Path: /download/
    10. Document Length: 453 bytes
    11. Concurrency Level: 20
    12. Time taken for tests: 0.006 seconds 发费的总时间
    13. Complete requests: 50 总共发起的请求个数
    14. Failed requests: 44 没有来得及处理的请求个数
    15. (Connect: 0, Receive: 0, Length: 44, Exceptions: 0)
    16. Write errors: 0
    17. Non-2xx responses: 44
    18. Total transferred: 19052 bytes
    19. HTML transferred: 10330 bytes
    20. Requests per second: 8434.55 [#/sec] (mean) 每秒请求数(总请求数除总时间)
    21. Time per request: 2.371 [ms] (mean) 对于客户端而言,单个请求所用的时间
    22. Time per request: 0.119 [ms] (mean, across all concurrent requests) 服务端处理请求的时间,不包括网络传输时间等
    23. Transfer rate: 3138.57 [Kbytes/sec] received 网络速率,可以用来当作网络瓶颈参考值
    24. Connection Times (ms)
    25. min mean[+/-sd] median max
    26. Connect: 0 0 0.1 0 1
    27. Processing: 1 1 0.5 1 2
    28. Waiting: 0 1 0.3 1 2
    29. Total: 1 2 0.4 2 2
    30. Percentage of the requests served within a certain time (ms)
    31. 50% 2
    32. 66% 2
    33. 75% 2
    34. 80% 2
    35. 90% 2
    36. 95% 2
    37. 98% 2
    38. 99% 2
    39. 100% 2 (longest request)

     
    

  • 相关阅读:
    【小程序】组件化开发的基本使用(二)
    空调行业如何破局?TCL空调双十一战绩可窥见端倪
    leetcode 3.11
    xss之DOM破坏
    与初至波相关的常见误解
    让业务满意的性能测试报告模板应该是怎样的?
    Qtcreator中文显示乱码问题终于解决
    免费的visual studio智能代码插件——CodeGeeX
    SimaPro生命周期评估建模与碳足迹分析流程
    shell 脚本部署 helm
  • 原文地址:https://blog.csdn.net/jialiu111111/article/details/127619628