Apache HTTPD 流量控制 mod_ratelimit

2025-01-09

mod_ratelimit 用於限制資料下載的速度

例如限制每個 request 每秒的速度是 512KB

適用於 httpd 2.4.24 之後的版本


設定方式

1.啟用 mod_ratelimit

通常是在這個檔中: /etc/httpd/conf.modules.d/00-optional.conf

LoadModule ratelimit_module modules/mod_ratelimit.so

2.apache 的設定資料

<VirtualHost *:80>
  DocumentRoot /var/www/html
  ServerName www.abc.com

  #設定速率限制 範例
  #SetEnv rate-limit 256  限制 256KB/s
  #SetEnv rate-initial-burst 1024 (可不設) 剛連線時 允需超頻為 1024KB/s
  #  經測試 前1秒 速度可超過 1024KB/s,接著開始遞減速度,大約 4~5秒就會降到 256KB/s
  <IfModule mod_ratelimit.c>
    <Location "/">
        SetOutputFilter RATE_LIMIT
        SetEnv rate-limit 256
        SetEnv rate-initial-burst 1024
    </Location>

    #針對 /download 目錄來限速
    <Location "/download">
        SetOutputFilter RATE_LIMIT
        SetEnv rate-limit 128
        SetEnv rate-initial-burst 1024
    </Location>

  </IfModule>

</VirtualHost>

特別注意:

若需要針對某目錄限速時,

例如 "/download" 必須是 "實體目錄" 的名稱

不可寫上 rewrite 過的路徑,會無限速效果

例如:

.htaccess 中有一行:

RewriteRule ^download123/(.*) /download/$1 [QSA,L]

然後下面寫法 就無法限速

<Location "/download123">
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 128
    SetEnv rate-initial-burst 1024
</Location>



參考:

分類:雲端      467
Tag apache , httpd , 限速 ,
留言

留言