Linux

使用 Apache2 限制每個 IP 的同時連接

  • January 12, 2018

我正在託管一個公共的重型 CPU Web 服務,我想將 Apache2 配置為每個 IP 地址只允許 1 個同時連接到手頭的位置,以防止單個客戶端使用過多的資源。

有沒有一個簡潔的 apache2 解決方案來做到這一點?我已經研究過 mod_bw 但這似乎並沒有解決問題(MaxConnections 僅適用於所有使用者,而不適用於每個 IP)。還有一個名為 apache2-mod-limitipconn 的模組,但這個模組沒有預編譯的包,我認為由於網站已死,因此維護時間更長。我更喜歡可以作為正式依賴項包含在 Ubuntu 中的東西。

根據我的經驗,恐怕它比僅僅限制“每個 IP 一個連接”要復雜一些(不是總是 :-))。

然而,還有其他可配置的參數,例如“MinSpareServers、MaxSpareServers 和 StartServers”(我不確定這些參數是否仍然存在,但它們肯定在 Apache 2.0 中)。

顯然,如果有幫助,使用“mod_deflate”壓縮輸出可以改善頻寬需求並將響應時間加快 75%。

“mod_bandwidth”可能會提供一些幫助,而不是試圖限制單個連接,這可能是我在查看壓縮後會走的路線。

或者,如果您可以編寫 C,那麼您可以自己創建一個模組來計算每個 IP 的連接數。

需要注意的是當一個 IP 被提供一個連接時會發生什麼。讓我們說通常這不是一個漂亮的景象!您可以轉到“伺服器繁忙”頁面或類似頁面,但我會沿著優化伺服器的路線走,所以它比讓訪問者沮喪的好。

引用自:https://serverfault.com/questions/252555