2016-11-14 9 views
0

nginxで動的接続制限を使用することは可能ですか?私はのために/ルート/ *グローバルレートリミットが、各ルートの特定を持っている必要はありませんNginx:動的レート制限

/route/1 
/route/2 
... 
/route/* 

は、私は次のルートを持って言うことができます。それはnginxで可能ですか?

各ルートの接続制限は1分に2回です。

私が考えていること:後に来るもの/ルート/はすべてidとして行動する必要があります。各IDには独自の接続制限があります。

limit_conn_zone $request_uri zone=addr:10m; 

server { 
    ... 
    limit_conn addr 1; 
} 

をしかし、私は期待してこれが動作するかどうか、わからないイム:

たぶん私はsomehtingのような可能性があります。

答えて

1

limit_connは、locationブロック内で使用できます。しかし、limit_conn同時接続数を制限します。レートを制限したい場合は、limit_reqモジュールhttp://nginx.org/en/docs/http/ngx_http_limit_req_module.htmlを使用して、その場所内でも使用できます。

また、場所ごとに別々の制限を設定する場合は、2通りの方法があります。各場所の最初の区域(limit_req_zone)。 2番目のゾーンですが、ルートをキーとして使用します。通常、最初のケースはメモリ使用量が多いために良いですが、あなたのケースでは(ルートの数に制限はありません)2番目の方法が優れています。だから、ルートからIDを抽出し、それをlimit_req_zoneというキーとして使用してください。

クライアントのIPアドレスごとに場所ごとに別々の制限が必要な場合は、limit_req_zone $binary_remote_addr$myid ...キーを使用します。

+0

これは非常によく見えます...私はそれを試みます。 – Eric