給你們推薦兩個Apache模塊,一個是mod_vhost_limit,用來限制請求併發數,一個是mod_limitipconn,用來控制 Apache的併發聯接數,經過該模塊能夠限制同一來源IP的併發聯接數。另外一個模塊是bw_mod,用於Apache網站帶寬控制,能夠根據來源IP, 網段來劃分帶寬,也能夠根據網站文件類型來限制帶寬,參數比較靈活,能夠根據本身實際狀況進行調整。 php
限制併發數 apache
到官方網址: http://ivn.cl/category/apache/ (看不懂的,直接查找mod_vhost_limit) 安全
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
< 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 >
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資源,反之亦然,下降精度可提高性能。