×
応用編

3. 認証画面へレート制限を設定する

httpブロック内:

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

limit_req_zone $binary_remote_addr
    zone=general_per_ip:20m
    rate=10r/s;

ログイン画面:

location = /account/login/ {
    limit_req zone=login_per_ip burst=5 nodelay;
    limit_req_status 429;

    proxy_pass http://django_backend;
}

一般画面:

location / {
    limit_req zone=general_per_ip burst=20 nodelay;

    proxy_pass http://django_backend;
}

Nginxのlimit_reqは、指定したキーごとのリクエスト速度をleaky bucket方式で制御します。burstを超えたリクエストは拒否されます。初回導入時はlimit_req_dry_run on;を使い、実際には遮断せずログだけを確認すると安全です。


4. スキャナUser-Agentは専用レート制限にする