nginxの制限、速度指令limit_conn、limit_rate、limit_req [H]

次のように異なるURLの電流制限の例については次のとおりです。

    limit_conn_zone $server_name zone=perserver:10m;
    limit_req_zone $server_name zone=one:10m rate=1r/s;
    server {
        listen       80;
        server_name  localhost;

        location /conn_1/ {
            limit_conn perserver 1;
            echo_sleep 0.1;
            echo $uri;
        }
        location /conn_5/ {
            limit_conn perserver 5;
            echo_sleep 0.1;
            echo $uri;
        }
        location /conn_10/ {
            limit_conn perserver 10;
            echo_sleep 0.1;
            echo $uri;
        }

        location /rate_10B/ {
            limit_rate 10;
            echo $uri; 
        }
        location /rate_50B/ {
            limit_rate 50;
            echo $uri;
        }
        location /rate_4kB/ {
            limit_rate 4k;
            echo $uri;
        }

        location /rate/ {
            if ($uri ~ "^/rate/10B/") {
                limit_rate 10;
            }
            if ($uri ~ "^/rate/50B/") {
                limit_rate 50;
            }
            if ($uri ~ "^/rate/4kB/") {
                limit_rate 4k;
            }
            echo $uri;
        }

        location /req_1_0/ {
            limit_req zone=one;
            echo $uri;
        }
        location /req_1_5/ {
            limit_req zone=one burst=5;
            echo $uri;
        }
        location /req_1_5_nodelay/ {
            limit_req zone=one burst=5 nodelay;
            echo $uri;
        } 
    }

注:エコーモジュールの例で使用しました。

説明

  1. server_nameは設定する必要があります。設定されていない場合は、「サーバー名」「のnginxのデフォルト値を使用します。」ここで、サーバー名の設定によって定義されたキーワードは有効になりませんか。
  2. 同時にリクエストへのアクセス、複数の送信// localhostの/ conn_1 /:HTTP、わずか200戻りステータスコード、残りの503エラーを返します。以下の情報をエラーログに表示されます。
    ゾーンによって接続の制限「PerServerの」、クライアント:127.0.0.1、サーバ:localhostを、要求:「GET / conn_1 / HTTP / 1.1」、ホスト:「localhost」を
    同様に、以上の5を送信中要求へのアクセスHTTP:// localhost /をconn_5 /、唯一の5つのリターン200のステータスコード、残りは503エラーを返しました。
  3. アクセスHTTP:// localhost /をrate_10B / $ REQUEST_TIME(リクエストの処理時間が)、すなわち、制限速度19.015秒であったが、199バイト(nginxのは、クライアントにバイト数を返します)$ BYTES_SENT、アクセスログを見ることで見ることができます図10は、秒あたりのバイト数。訪問のhttp:// localhostの/レート/ 10B / 制限速度は毎秒10バイトです。
    アクセスHTTP:// localhost /をrate_50B /、199バイトで、$ REQUEST_TIMEは制限速度が毎秒50バイトで、あること、3.003秒である$ BYTES_SENT、アクセスログを見ることで見ることができます。
  4. 送信するクライアントは、nginxのに要求を送信するレートを制限しないクライアントへの応答、limit_rate nginxの律速です。クライアントが同時に2つの接続を開いた場合、接続速度の制限により、nginxのは、そう、クライアントの全体的な速度は、この命令セットの値の2倍です。
  5. 同時にリクエストへのアクセス、複数の送信// localhostの/ req_1_0 /:HTTP、わずか200戻りステータスコード、残りの503エラーを返します。エラーログに次の情報が表示されます:
    制限要求、過剰:ゾーン"ワン"による1.000、クライアント:127.0.0.1、サーバ:localhostを、要求: "GET / req_1_0 / HTTP / 1.1"、ホスト: "localhost"を
  6. 同時変速機10のアクセスを要求するHTTP:// localhostの/ req_1_5 /状態への即時リターン200のコードがある4つの要求は直ちに、残りの5戻る毎秒要求200に応答し、総ステータスコード503を返すあります5秒、6つの200戻りステータスコードの合計を取ります。エラーログに次の情報が表示されます:
    制限要求、過剰:ゾーン"ワン"による5.997、クライアント:127.0.0.1、サーバ:localhostを、要求: "GET / req_1_5 / HTTP / 1.1"、ホスト: "localhost"を
  7. 同時変速機10のアクセスを要求するHTTP:// localhostの/ req_1_5_nodelay /六要求は直ちに残り4は直ちに503エラーを返し、ステータスコード200を返します。:次の情報は、エラーログに表示される
    要求、過剰制限:5.998ゾーンによって "1"を、クライアント:127.0.0.1、サーバー:localhostを、要求: "GET / req_1_5_nodelay / HTTP / 1.1"、ホスト: "localhost"を
  8. limit_connとlimit_reqを設定することができない場合、命令、異なるURLのための現在の制限は、唯一異なる位置によって達成することができるので、場合。命令は異なる流量制限を達成するためのURLのURLに一致した場合の命令が使用できるかどうlimit_rate。


著者:boldcautious
リンクします。https://www.jianshu.com/p/ca6ac851f04d
出典:ジェーンの本は
、著者が著作権を保有しています。著者は認可商業転載してください接触、非商用の転載は、ソースを明記してください。

おすすめ

転載: www.cnblogs.com/ExMan/p/12620384.html
h'h