私がこれをしたい理由は、ユーザーがJavaScriptを使用してAPIに対して開発し、一部の開発者がめちゃくちゃにして、訪問者にAJAXリクエストでサーバーをバタンとさせます。これが発生した場合、 APIリクエストをおそらく1分あたり50リクエスト、またはその効果に絞ることができます。
注:(特にDB集中型のリソースなので、サーバー全体ではなくパスレベルで(たとえば、「/ static /」ではなくスロットル "/ json_api /")。
これは、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
を別のセクションにします。