Nginxは現在の制限と高い同時実行性の処理を実現します

Nginxは電流制限を実装します

ユーザーによる悪意のあるアクセスを防ぐために、nginxに現在の制限を設定して、サービスが雪崩の影響を受けないようにすることができます

Nginxの電流制限は2つのタイプに分けられます

	一是根据ip控制速率

	二是控制并发连接数

1 "IP制御レート電流制限構成による

httpモジュールに構成を追加する
  ここに画像の説明を挿入
binary_remote_addrはキーです。つまり、現在の制限はremote_addr(クライアントIP)に基づいており、binary_の目的はメモリフットプリントを圧縮することです。
  
zone:アクセス情報を格納するための共有メモリ領域を定義します。contentRateLimit:10mは、サイズが10M、名前がcontentRateLimitのメモリ領域を表します。
  1Mは16000のIPアドレスアクセス情報を保存でき、10Mは16WのIPアドレスアクセス情報を保存できます。
rateは、最大アクセスレートを設定するために使用されます。rate= 10r / sは、1秒あたり最大10リクエストを処理することを意味します。
  Nginxは実際にはミリ秒の粒度でリクエスト情報を追跡するため、実際には10r / sが制限です。リクエストは100ミリ秒ごとに処理されます。これは、最後のリクエストが処理された後、100ミリ秒以内に別のリクエストが到着した場合、リクエストは拒否され、404エラー返されることを意味します
  場所のlimit_reqを構成します
ここに画像の説明を挿入

この構成は、要求パスが/ read_contentの場合、現在はcontentRateLimitに従って
制限され、各IPアクセスのレート制限は2r / sであり、バーストでアクセスできる要求数は4であり、リクエスト遅れません。

次のように完全に構​​成された
重複コード

user  root root;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

#cache
lua_shared_dict dis_cache 128m;

#限流设置
limit_req_zone $binary_remote_addr zone=contentRateLimit:10m rate=2r/s;

sendfile        on;
#tcp_nopush     on;

#keepalive_timeout  0;
keepalive_timeout  65;

#gzip  on;

server {
    listen       80;
    server_name  localhost;

    location /update_content {
        content_by_lua_file /root/lua/update_content.lua;
    }

    location /read_content {
        limit_req zone=contentRateLimit burst=4 nodelay;
        content_by_lua_file /root/lua/read_content.lua;
    }
    #添加nodelay配置,这样就是根据你的网络状况访问,一分钟访问够4次后,服务器直接返回503。
}}

2「同時接続数に応じて電流を制限する

   http模块添加

  limit_conn_zone $binary_remote_addr zone=perip:10m;

  limit_conn_zone $server_name zone=perserver:10m;



   location 添加配置

  location / {

           limit_conn perip 10;#单个客户端ip与服务器的连接数.

           limit_conn perserver 100; #限制与服务器的总连接数

          root html; index index.html index.htm;

      }

完全な構成は次のとおりです

user  root root;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #cache
    lua_shared_dict dis_cache 128m;

    #限流设置
    limit_req_zone $binary_remote_addr zone=contentRateLimit:10m rate=2r/s;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        location /update_content {
            content_by_lua_file /root/lua/update_content.lua;
        }

        location /read_content {
            limit_req zone=contentRateLimit burst=4 nodelay;
            content_by_lua_file /root/lua/read_content.lua;
        }
    }
}




あとがき:白い靴が汚れているのを見つけたら、パートナーが私をきれいに磨いてくれるので、これからは白い靴だけを買うことにしました。

おすすめ

転載: blog.csdn.net/weixin_43945983/article/details/106720933