對於 MediaWiki 與 XOOPS 一直有大量連線的困擾。這些大量的連線基本上都是 robot,很想直接阻斷它,但又覺得這也不是一個正規的解決方式,有些 robot也可能有它存在的價值。 當然手上的主機對於這些連線的負載也還在承受範圍內,所以也沒有去理會它。
不過同仁在昨日突然提出這個問題。不能阻斷這些 robot,又怕這些 robot 影響主機的效能。
因為不能主動的直接拒絕掉這些 robot 連線,也只好限制它能使到的資源,讓資源的使用可以最大化。找找資料後,大致上覺得可以應對的方式如下(當然也許有其它更好的處理方式,往後看到或想到再慢慢補充)。
- Apache安裝 mod_ratelimit 模組。針對特定的目錄,例如一些全文 PDF檔的目錄限制流量,這樣可以允許更多的使用者存取檔案也不會造成塞車的現象。
- Apache安裝 mod_evasive 模組,直接阻斷或暫時中斷這些同 IP來源的大量存取連線。
- Apache 安裝 mod_bw,限定己知的 robot IP 來源,使用不同的流量限制。
- 調整網站架構。在服務的 Apache 主機的前端,搭配快取機制,如在前端再起一台 proxy 主機,應付這些相同連線的執行結果。
相關資料:
- Apache Modulemod_ratelimit
- labs.beyond.com.twLinux ubuntu apache 限制頻寬
- 以 mod_evasive 阻擋 D.o.S 攻擊
- Plone 效能測試綜合報告