2011/09/06

Forward Proxy 的選擇 - Squid

Forward proxy 與 Reverse proxy 是什麼可以參考聯成電腦這篇的說明

用途方面簡單舉幾個例子

  • Forward proxy
    • 用戶套用Hinet的proxy,抓國外的東西會比較快,因為proxy上面已經cache一份。
    • 公司或宿舍網路禁止對外存取facebook或上msn,proxy上有強大的parser可以check/replace特定字眼。
  • Reverse proxy
    • 在多台web server前架一台proxy做分流可以大大提高capacity與安全性,推薦Nginx。
    • 搭配virtual host,可將不同domain name的request導向不同的server。



最近剛好有使用forward proxy的需求,也就是用戶透過proxy連到public網路,如果遇到連接對向很慢或不存在的時候,此時proxy的connection就會被占住,直到timeout為止。剛開始是使用apache,apache prefork或worker模式下,其connection的數量是有限的(再設定檔內指定),若遇到上述的狀況,整體服務狀況就會變得很差。

Proxy的選擇
  • Apache + module proxy: 很吃記憶體,polling的做法不合用
  • Tinyproxy: 較apache省記憶體,但運作方式也是一個thread一個connection,response time比apache還差
  • Lighttpd: 不支援forward proxy,底層為epoll
  • Nginx: 不支援forward proxy,底層為epoll
  • Squid: 支援forward proxy,底層採用epoll (最後的選擇)

Squid的filter真的很強大,過濾ip, port, mac都沒有問題。
效能方面,我讓他hang了20,000條connection,new request上去反應並沒有被影響。

設定方面可以參考


沒有留言:

張貼留言