次のように異なる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;
}
}
注:エコーモジュールの例で使用しました。
説明
- server_nameは設定する必要があります。設定されていない場合は、「サーバー名」「のnginxのデフォルト値を使用します。」ここで、サーバー名の設定によって定義されたキーワードは有効になりませんか。
- 同時にリクエストへのアクセス、複数の送信// 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エラーを返しました。 - アクセス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、アクセスログを見ることで見ることができます。 - 送信するクライアントは、nginxのに要求を送信するレートを制限しないクライアントへの応答、limit_rate nginxの律速です。クライアントが同時に2つの接続を開いた場合、接続速度の制限により、nginxのは、そう、クライアントの全体的な速度は、この命令セットの値の2倍です。
- 同時にリクエストへのアクセス、複数の送信// localhostの/ req_1_0 /:HTTP、わずか200戻りステータスコード、残りの503エラーを返します。エラーログに次の情報が表示されます:
制限要求、過剰:ゾーン"ワン"による1.000、クライアント:127.0.0.1、サーバ:localhostを、要求: "GET / req_1_0 / HTTP / 1.1"、ホスト: "localhost"を - 同時変速機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"を - 同時変速機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"を - limit_connとlimit_reqを設定することができない場合、命令、異なるURLのための現在の制限は、唯一異なる位置によって達成することができるので、場合。命令は異なる流量制限を達成するためのURLのURLに一致した場合の命令が使用できるかどうlimit_rate。
著者:boldcautious
リンクします。https://www.jianshu.com/p/ca6ac851f04d
出典:ジェーンの本は
、著者が著作権を保有しています。著者は認可商業転載してください接触、非商用の転載は、ソースを明記してください。