Nginxでアクセス量の制御を行う方法(ngx_http_limit_req_module)
サイト内のあるファイルやページに対してアクセス拒否はできない(したくない)が、不正と思われるような大量アクセスを防ぎたいというケースがある。Nginxでngx_http_limit_req_moduleを使用することで大量アクセスの際に503を返してくれるようになるらしい。以下に導入方法をメモ。
対応方法
設定ファイル
# 制限ルールを定義(nginx.confのhttpブロック内に記述)
limit_req_zone $binary_remote_addr zone=login_limit:10m rate=1r/s;
# 制限したいディレクトリを指定
location = /limit/ {
limit_req zone=login_limit burst=5 nodelay;
}
注意点
アクセスIPやアクセス回数等はメモリ上に保存されるため、Nginxを再起動するとリセットされる点に注意。
リファレンス
ngx_http_limit_req_module
https://nginx.org/en/docs/http/ngx_http_limit_req_module.html
参考サイト
https://miraitranslate-tech.hatenablog.jp/entry/nginx-limit-req
関連記事
-
-
Nginxでリダイレクト(http->https)及びリライト設定
Nginxでhttpアクセス時にhttpsリダイレクトさせたい。それとは別に「h ...
-
-
コンテナ側のApacheのアクセスログにリバースプロキシのIPではなく本来のアクセスIPを出力する方法
ホスト側Nginxからリバースプロキシ経由でApacheコンテナに接続する環境に ...
-
-
NginxでアクセスIP制限(ブラックリスト / ホワイトリスト)を行う方法
NginxでアクセスIP制限を試してみたい。また、特定のIPのみ許可するホワイト ...
-
-
Nginxで特定のディレクトリに対してBasic認証を設定
Nginxで特定のディレクトリに対してBasic認証を設定したい。Apacheだ ...
-
-
AlmaLinux8系にNginxを導入しPodmanコンテナに接続する方法
AlmaLinux8でホスト側はApacheからPodmanコンテナ環境に接続し ...