web-dev-qa-db-ja.com

NGINX-不正使用を防ぐためにリクエストを調整する

私がこれをしたい理由は、ユーザーがJavaScriptを使用してAPIに対して開発し、一部の開発者がめちゃくちゃにして、訪問者にAJAXリクエストでサーバーをバタンとさせます。これが発生した場合、 APIリクエストをおそらく1分あたり50リクエスト、またはその効果に絞ることができます。

注:(特にDB集中型のリソースなので、サーバー全体ではなくパスレベルで(たとえば、「/ static /」ではなくスロットル "/ json_api /")。

29
orokusaki

これは、Nginxで LimitReqModule を使用して行うことができます。ただし、これがリバースプロキシ用の場合は、新しい HAProxyでサポートされているレート制限 を試してみてください。

あなたが望む正確なレートを得るために、nginxレート制限は 少し混乱する であることがわかりました。

しかし、基本的には次のようなものがあります。

limit_req_zone  $binary_remote_addr  zone=default:10m   rate=50r/m;

httpセクション内のlocationセクション内のserverセクション内の次のようなもの:

limit_req zone=default burst=10 nodelay;

/staticのような特定のセクションで使用しないようにするには、limit_reqディレクティブ(またはその逆)を含めずに、locationを別のセクションにします。

37
Kyle Brandt