📌
Nginxで時間帯別の速度制限を施す
概要
- トラフィックとか制限したい
- でも常に不便なのは申し訳ない
- Nginxをビルドし直すのはめんどいので標準でやりたい
アナログな手段としてファイルの有無で適用するlimit_rateを変更する。
Nginx側の下準備
nginx.conf
の使いたいlocation内に記述。
location / {
# フラグ用変数を用意
set $bandwidth_limit false;
# ファイルの有無をチェック
if ( -e /var/tmp/nginx_timechk ) {
set $bandwidth_limit true;
}
# ファイルがある場合は10MByte/Secに
if ( $bandwidth_limit = true ) {
limit_rate 10M;
}
# ファイルがない場合は50MByte/Secに
if ( $bandwidth_limit = false ) {
limit_rate 50M;
}
}
cronで時間帯制御
e.g. 9時〜18時(業務時間帯)は低速運用。
* 9 * * * touch /var/tmp/nginx_timechk
* 18 * * * rm -f /var/tmp/nginx_timechk
# お好みで >/dev/null 2>&1 とか
- よくあるNginx無停止でのメンテナンス画面表示と同じ手法なので応用が利く
- 昔はcbq.initとか使って制御していたけれどCentOS7で手軽に動かなかったので
Discussion