mod_cband 可以達到對 virtualhost 作頻寬、連線數限制,且總流量到了某階段可以重導至某個頁面作提示或者直接對速度作設限
1.) yum 安裝 mod_cband
2.) 設定狀態瀏覽,vi /etc/httpd/conf.d/mod_cband.conf
LoadModule cband_module modules/mod_cband.so <Location /cband-status> SetHandler cband-status Order allow,deny Allow from 127.0.0.1/32 10.1.1.0/24 </Location> <Location /cband-status-me> SetHandler cband-status-me Order allow,deny Allow from 127.0.0.1/32 10.1.1.0/24 </Location>
3.) 瀏覽 web,http://ssorc.tw/cband-status
圖1 cband-status
4.) 限制下載速度
<VirtualHost *:80> DocumentRoot /var/www/html/ ServerName ws1.ssorc.tw CustomLog logs/ws1.ssorc.tw-access_log combined ErrorLog logs/ws1.ssorc.tw-error_log RewriteEngine On RewriteOptions inherit CBandSpeed 10240 10 30 # CBandSpeed 設定給這個 virtualhost 總配給 最大多少頻寬kbps、每秒10個要求、最大30個連線 CBandRemoteSpeed 100kb/s 3 2 # CBandRemoteSpeed 設定每個 Client 的配給 100kbytes、每秒3個要求、2個連線 </VirtualHost> <VirtualHost *:80> DocumentRoot /var/www/html/ ServerName ws2.ssorc.tw CustomLog logs/ws2.ssorc.tw-access_log combined ErrorLog logs/ws2.ssorc.tw-error_log RewriteEngine On RewriteOptions inherit CBandSpeed 1024 10 30 CBandRemoteSpeed 10kb/s 3 2 </VirtualHost>
圖2 cband-status
5.) 設定頻寬流量配額
a) mkdir /var/run/cbandscoreboard/ ; chown apache.apache /var/run/cbandscoreboard/
b) vi /etc/httpd/conf.d/mod_cband.conf
<VirtualHost *:80> DocumentRoot /var/www/html/ ServerName ws2.ssorc.tw CustomLog logs/ws2.ssorc.tw-access_log combined ErrorLog logs/ws2.ssorc.tw-error_log RewriteEngine On RewriteOptions inherit CBandSpeed 1024 10 30 CBandRemoteSpeed 50kb/s 3 2 CBandLimit 1000 # 將總配給限在 1000 Kbytes CBandExceededURL http://ssorc.tw/CBandDefaultExceededURL.html # 當超過總量時重導至某個網頁 # 情況一: 當量超過時,現在正在下載的檔案仍然持續以同樣的速度繼續抓取 # 情況二: 另一方案是可以設定當超過時之後的速度為多少,就是 CBandExceededSpeed 20kb/s 3 2 CBandScoreboard /var/run/cbandscoreboard/ws2.ssorc.tw # 分數計算儲存檔案 CBandPeriod 30M # 30分鐘重新計算, # 這裡我們可以設定 4W, # 用在限制一個月內可以使用的量 </VirtualHost>
圖3 cband-status
圖4 cband-status
留言