zoukankan      html  css  js  c++  java
  • Nginx的请求限制

    连接频率的限制 -limit_conn_module

    请求频率的研制 -limit_req_module

    tcp三次握手,一次连接可以建立多次http请求

    连接限制的语法

    #语法1

    Syntax:limit_conn_zone key zone=name:size;

    Default:——

    Context:http

    #语法2

    Syntax:limit_conn zone number

    Default:——

    Context:http,server,location

    请求限制的语法

    #语法1

    Syntax:limit_req_zone key zone=name:size rate=rate    

    Default:——

    Context:http

    #语法2

    Syntax:limit_req zone=name [burst=number] [nodelay]

    Default:——

    Context:http,server,location

    演示:

    vi /etc/nginx/conf.d/default.conf

    limit_conn_zone(连接限制) $binary_remote_addr zone=conn_zone:1m; 
        limit_req_zone(请求限制) $binary_remote_addr(请求ip) zone=req_zone(名称):1m(空间大小) rate=1r/s(一秒一次);
    server {
        listen       80;
        server_name  localhost;
     
        #charset koi8-r;
        #access_log  /var/log/nginx/log/host.access.log  main;
     
     
        location / {
            root /opt/app/code;
            limit_conn conn_zone 1;(一时刻只能处理一下连接请求)
            #limit_req zone=req_zone burst=3(最后3请求个放到下一秒执行) nodelay;
            #limit_req zone=req_zone burst=3;
            #limit_req zone=req_zone; (启动请求限制)
            index  index.html index.htm;
        }
     
        #error_page  404              /404.html;
     
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504 404  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
     
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
     
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
     
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }

    测试请求限制是否生效

    安装 ab工具

    yum -y install httpd-tools

    1.启动配置limit_req zone=req_zone

    压测

    ab -n 20 -c 20 http://192.168.96.188/1.html

    如果生效会打印错误日志如下

    2.启动配置limit_req zone=req_zone burst=3 nodelay;

    同样测试

    ab -n 20 -c 20 http://192.168.96.188/1.html

    此时有做延时,请求只有16个

    3.配置连接限制limit_conn conn_zone 1方法同上

  • 相关阅读:
    linux下mysql的安装
    linux下mysql设置主从
    linux下安装jdk8并且配置环境变量
    C#实现rabbitmq 延迟队列功能
    对angular.js的一点理解
    angular.js的路由和模板在asp.net mvc 中的使用
    通过Web Api 和 Angular.js 构建单页面的web 程序
    Orchard运用
    Orchard运用
    Orchard运用
  • 原文地址:https://www.cnblogs.com/joy-sir/p/12162416.html
Copyright © 2011-2022 走看看