apache限制併發數,IP,帶寬設置

給你們推薦兩個Apache模塊,一個是mod_vhost_limit,用來限制請求併發數,一個是mod_limitipconn,用來控制 Apache的併發聯接數,經過該模塊能夠限制同一來源IP的併發聯接數。另外一個模塊是bw_mod,用於Apache網站帶寬控制,能夠根據來源IP, 網段來劃分帶寬,也能夠根據網站文件類型來限制帶寬,參數比較靈活,能夠根據本身實際狀況進行調整。 php

限制併發數 apache

到官方網址: http://ivn.cl/category/apache/ (看不懂的,直接查找mod_vhost_limit) 安全


安裝:
apxs -c mod_vhost_limit.c -o /path/to/libexec/mod_vhost_limit.so

在 httpd.conf 加入:
LoadModule vhost_limit_module libexec/mod_vhost_limit.so
AddModule mod_vhost_limit.c



配置:

MaxClients 150
ExtendedStatus On

NameVirtualHost *

<VIRTUALHOST * />
ServerName server1
DocumentRoot /some/where/1
MaxVhostClients 100


<VIRTUALHOST * />
ServerName server2
DocumentRoot /some/where/2
MaxVhostClients 30


<VIRTUALHOST * />
ServerName server3
DocumentRoot /some/where/3



其中: server1 被限制爲 100 個併發線程數。 server2 被限制爲 30 個併發線程數。 server3 沒有被限制。

注:需 mod_status 的 ExtendedStatus On 支持!!

如超出限制的併發數在客戶端就會出現503錯誤
----------------------------------------------------------------------------------------------
限制IP鏈接數


到這裏下載模塊 http://dominia.org/djao/limit/mod_limitipconn-0.04.tar.gz

安裝:
tar zxvf mod_limitipconn-0.04.tar.gz
cd mod_limitipconn-0.04
make APXS=/usr/local/apache/bin/apxs ß-----這裏要按你本身的路徑設置
make install APXS=/usr/local/apache/bin/apxs ß-----這裏要按你本身的路徑設置

編輯httpd.conf
添加
全局變量:
< IfModule mod_limitipconn.c >
   < Location / > # 全部虛擬主機的/目錄
  MaxConnPerIP 3 # 每IP只容許3個併發鏈接
   NoIPLimit image/* # 對圖片不作IP限制
< /Location >

  < Location /mp3 > # 全部主機的/mp3目錄
    MaxConnPerIP 1 # 每IP只容許一個鏈接請求
    OnlyIPLimit audio/mpeg video # 該限制只對視頻和音頻格式的文件
< /Location >
< /IfModule >



或者虛擬主機的:
< VirtualHost xx.xxx.xx.xx > ##ip 地址
    ServerAdmin easy@phpv.net
    DocumentRoot /home/easy
    ServerName www.phpv.net
  < IfModule mod_limitipconn.c >
   < Location / >
      MaxConnPerIP 5
  NoIPLimit image/*
   < /Location >
  < Location /mp3 > # 全部主機的/mp3目錄
      MaxConnPerIP 2 # 每IP只容許一個鏈接請求
      OnlyIPLimit audio/mpeg video # 該限制只對視頻和音頻格式的文件
  < /Location >
  < /IfModule >
< /VirtualHost >



----------------------------------------------------------------------------------------------
限制帶寬:



下載模塊 ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c
安裝:
/usr/local/apache/bin/apxs -c ./mod_bandwidth.c -o /usr/local/apache/libexec/mod_bandwidth.so

<-------以上/usr/local/apache請設置爲你的路徑

編輯httpd.conf
添加:
LoadModule bandwidth_module libexec/mod_bandwidth.so
AddModule mod_bandwidth.c
重啓你的apache from: http://www.phpv.net/article.php/300 ---------------------------------------------------------------------------------------------- 1、對於mod_limitipconn,其實該模塊不只提供客戶端併發聯接數的控制能力,從安全角度來講還能夠起到對抗固定來源IP地址發起的 DOS攻擊,包括來源固定的大量訪問請求型攻擊(大量GET或POST請求型的攻擊),當同一來源IP地址的聯接數超過限定的值後,會彈回對方的訪問請 求,給對方一個「503服務臨時無效」的響應。當Apache服務器受到大量的訪問請求型攻擊的時候,因爲大量的Apache進程及PHP和MYSQL運 行消耗,會致使服務器資源迅速耗盡,網站打開緩慢或癱瘓。若是是此種類型的攻擊,使用mod_limitipconn模塊則能夠有效地提高服務器的抗攻擊 能力,由於大量的請求被彈回,節省了服務器運行PHP及MYSQL的性能消耗。固然只要請求進了80端口,不論是接受仍是彈回請求,Aapche都有運行 成本,因此此方法只能是減輕而沒法解決,畢竟應用層的處理效率是比較低的。 2、對於網站訪問量比較大、使用了mod_limitipconn模塊且限制同一客戶端併發聯接數低於3的狀況下,若是用Apache默認的配置參數,極 可能常常出現「服務臨時無效」的提示。由於Apache默認是設置「KeepAlive on」,且「KeepAliveTimeout 180」,因此一旦創建聯接,那麼在3分鐘內這個聯接是不會被釋放的。因此若是網站不一樣頁面點擊頻率比較高或圖片資源比較多的話,會常常出現服務臨時無效 的提示。那麼有兩種方式去解決,一是加大併發聯接數的量,好比設置爲普通站點10個併發聯接數,圖片站點則20個。另外一種方式就是若是你不想加大這個值的 話,能夠設置KeepAlive爲off,而後縮短Timeout時間,這樣聯接會很快被釋放出來。具體狀況根據須要去調整測試,以獲得一個最適合本身站 點狀況的值。 3、若是要同時限制併發聯接數與帶寬的話,就用bw_mod+mod_limitipconn,由於雖然bw_mod也能夠控制併發聯接數,但他是針對某 個目錄或整個網站的併發聯接數,是用來控制服務器端的總聯接數,好比設置MaxConnection all 1000,那麼這個網站所能接受的最大併發聯接數爲1000,而並非限制每一客戶端的併發聯接數,而mod_limitipconn則是針對同一來源 IP的客戶端的併發聯接數,因此這二者的聯接數限制是有所區別的。 4、我的感受用了bw_mod及mod_limitipconn模塊後,網站訪問速度有所降低,能憑直觀地感受出來,而且CPU的負載有所上升。特別是在 網站訪問量比較大的狀況下,這兩個模塊會消耗必定的主機性能,因此輕重權衡這個得你們本身根據狀況來採用了。另外bw_mod裏有個參數是用來設置控制精 度與頻率的,默認是1000毫秒,若是你想提升帶寬控制精度就改小這個數值,但會消耗更多的CPU資源,反之亦然,下降精度可提高性能。
相關文章
相關標籤/搜索