References:
http://apps.hi.baidu.com/share/detail/20306022
http://www.ajaxstu.com/Proxyfuwuqi/333031.html
http://www.php-oa.com/tag/squid
零. 環境介紹
系統:CentOS 5.7 64bit
Squid:2.6STABLE21
一. 安裝Squid
Squid 官方下載地址:
http://www.squid-cache.org/Versions/
作爲老牌的Proxy軟件,Squid的支持度非常好,除了源碼包和詳盡的文檔外,主流發行版均有二進制包直接提供。
此次實驗的由於目的十分單純,爲了簡化流程,採用直接yum安裝:
yum install squid -y
二. 修改配置
1. yum 安裝的 squid 默認是沒有 visible_hostname 的,首先添加 visible_hostname:
vi squid.conf
這裏我添加了 ave_squid 作爲 squid 的主機名:
visible_hostname ave_squid
2. 添加acl允許squid訪問欲代理站點
acl ssl_server dstdomain .avepoint.net
#對 *.avepoint.net 允許訪問
http_access allow ssl_server
!注意:不建議直接放開 http_access allow all,雖然看似省事,但可能會造成安全隱患!
3. 增加squid監聽443端口並加載自簽證書
https_port 443 cert=/etc/squid/ssl/avepoint.net.crt key=/etc/squid/ssl/avepoint.net.key defaultsite=www.avepoint.net accel
4. 預防老版本IE的SSL bug
ssl_unclean_shutdown on
5. 添加源網站
cache_peer www.avepoint.net parent 443 0 no-query no-digest originserver login=PASS ssl sslflags=DONT_VERIFY_PEER front-end-https=on
a) login=PASS 是爲了告知 squid 此源網站需要用戶名/密碼驗證,用於解決SP等網站的登錄認證;
b) ssl 爲指定協議,後跟的 sslflags=DONT_VERIFY_PEER 爲不進行源端SSL證書驗證,可以解決上級網站採用自簽證書造成的中斷,以及減少響應時間;
c) front-end-https=on 是爲微軟OWA使用SSL反代理而量身訂做的參數。
6. 關於 cache_mem 和 cache_dir
如字面所述,cache_mem 是將部分緩存(通常是指定容量以下的小文件)放在內存中,cache_dir是指定硬盤上的squid緩存目錄。此處我們不涉及緩存內容,所以保持默認即可。
值得一提的是,硬盤緩存可以使用 tmpfs 文件系統,即所謂的 shm,實質上大致與 ramdisk 等同,可以提高性能。
至此配置基本完成,可以啓動squid測試了:
三. 備註
1. 如果 squid 反代的併發較高時,可能會遇到類似 file descriptor error 的錯誤,多是因爲Linux默認的同時打開文件數僅爲1024,而此時打開的緩存文件大小早已超過這個數值。
解決方式:
ulimit -n 65535
2. squidclient 是 squid 自帶的一個功能十分強大的管理軟件,可以獨立或搭配其他軟件對 squid 的狀態和緩存內容進行查看和操作。例:
squidclient -t 1 -h localhost -p 3128 mgr:info
注意,3128 端口需要在 squid 中定義爲 http_port。
3. 日誌位置
/var/log/squid :
access.log 代理訪問日誌
cache.log squid 緩存的相關運行信息
squid.out squid 程序本身的運行信息
store.log 對緩存文件的操作記錄
4. 自簽證書的生成可參照Nginx的筆記,在此不再贅述。
四. 小結
作爲老牌的 Proxy,Squid 參數十分繁雜,但與之對應的是極大豐富的功能。
如果需求簡單明確如本實驗所述的話,不需要過多的配置就可以實現所需功能。
讓我留下深刻印象的是,Squid 提供了強大的對 header 進行操作的方式,可以細緻地控制 header 輸出與否,以及對 header 進行更改等等,實用性很強。