本文中SQUID放在172.20.65.201的機器上,應用WEB SERVER IP為172.20.65.203,其中SQUID在201上的80連接埠偵聽,測試用戶端機器為172.20.65.231,在squid.conf中#代表注釋,所以開啟某項設定,需去掉前面的#。TAG標籤代表每一功能項的設定。
1、下載
下載SQUID FOR WINDOWS(我所用的版本是Squid 2.7.STABLE6,各個版本的配置可能略有不同,大家請注意)
2、安裝
將SQUID解壓到c:\squid(當然也可解壓在其它盤符下)
3、建立磁碟緩衝和日誌目錄
預設情況是在安裝磁碟下建立,為確保效能大幅度提升,建立選擇磁碟空間容量較大的盤符,如:建立d:\squid\var目錄,在var目錄下建立logs和cache目錄,其中logs目錄用 於存放日誌,cache目錄用於存放硬碟快取資料。
4、建立緩衝目操作許可權
為了使抓取的資料,能夠存放在緩衝目錄下,建立系統賬戶如squidApp,將其屬於普通使用者組應可,將d:\squid授予該使用者讀寫權限即可。
5、檔案更改
c:\squid\etc是SQUID的配置資訊的存放處,為確保安全,在你修改設定檔前,請將其備份,然後將squid.conf.default修改為squid.conf,
mime.conf.default修改為 mime.conf ,cachemgr.conf.default 修改為cachemgr.conf
6、配置SQUID
針對於SQUID來講大部分配都在squid.conf中,本文中所使用環境如下:
開啟如下存取控制
acl all src all acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 acl localnet src 172.16.65.231/255.255.0.0 指定本網及掩碼
開啟訪問連接埠
acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT
開啟存取控制,請一定要注意順序
http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow all http_access allow localnet http_access deny all
指定SQUID在80連接埠偵聽, vhost 指定使用加速模式
http_port 80 vhost
172.20.65.203後台WEB SERVER, parent指父節點, 80 指後台網站的連接埠, 0 ICP 服務連接埠,no-query originserver 擷取緩衝時的選項
cache_peer 172.20.65.203 parent 80 0 no-query originserver
緩衝設定
maximum_object_size_in_memory 1024 KB cache_dir ufs d:/squid/var/cache 1024 16 256 注意路徑 maximum_object_size 4096 KB cache_swap_low 90 cache_swap_high 95
日誌設定
access_log d:/squid/var/logs/access.log squid 訪問日誌 cache_log d:/squid/var/logs/cache.log cache_store_log d:/squid/var/logs/store.log emulate_httpd_log on
控制頁面緩衝內容
refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320 refresh_pattern -i \.css$ 20 50% 120 reload-into-ims refresh_pattern -i \.xml$ 20 50% 120 reload-into-ims refresh_pattern -i \.html$ 20 90% 120 reload-into-ims refresh_pattern -i \.jpg$ 20 90% 120 reload-into-ims refresh_pattern -i \.png$ 20 90% 120 reload-into-ims refresh_pattern -i \.gif$ 20 90% 120 ignore-reload refresh_pattern -i \.js$ 20 90% 120 reload-into-ims refresh_pattern -i \.htm$ 20 90% 120 reload-into-ims
設定郵箱
cache_mgr webmaster_breeze
設定本地主機檔案
hosts_file c:/windows/system32/drivers/etc/hosts
7、安裝服務
將squid安裝為服務,命令格式:
squid -i [-f configfile] [-n servicename],如c:\squid\sbin\squid -i -n Squid_Proxy
8、初始化緩衝目錄
c:\squid\sbin\squid -z
9、啟動Squid_Proxy服務
運行services.msc開啟服務視窗,選擇Squid_Proxy服務 ,如果啟動過程出錯90%是設定檔出現問題。
10、squid命令
squid -k reconfigure //啟用新的設定檔 squid -k rotate //截斷日誌 squid -k shutdown //stop squid squid -dx 當服務不能啟動時,進行調試
更多配置請參見文檔
四、SQUID測試
找一台機器進行測試,並查看access.log日誌,如果出現 TCP_DENY的資訊,多為配置不正確。如出現如下資訊TCP_MEM_HIT/200 表示,SQUID已經起作用,該請求是從 SQUID運行機器的記憶體中響應的。
######################
常用調試命令
######################
1、初始化你在 squid.conf 裡配置的 cache 目錄
#squid/sbin/squid -z //第一次啟動squid服務時必須輸入此命令
如果有錯誤提示,請檢查你的 cache目錄的許可權。
2、對你的squid.conf 排錯,即驗證 squid.conf 的 文法和配置。
#squid/sbin/squid -k parse
如果squid.conf 有文法或配置錯誤,這裡會返回提示你,如果沒有返回,恭喜,可以嘗試啟動squid。
3、在前台啟動squid,並輸出啟動過程。
#squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,啟動成功。
然後 ctrl + c,停止squid,並以後台啟動並執行方式啟動它。
4、啟動squid在後台運行。
#squid/sbin/squid -s
這時候可以 ps -A 來查看系統進程,可以看到倆個 squid 進程。
5、停止 squid
#squid/sbin/squid -k shutdown
這個不用解釋吧。
6、重引導修改過的 squid.conf
#squid/sbin/squid -k reconfigure
這個估計用的時候比較多,當你發現你的配置有不盡你意的時候,可以隨時修改squid.conf,然後別忘記對你的 squid.conf排錯,然後再執行此指令,即可讓運行中squid重新按照你的squid.conf 來運行。
7、把squid添加到系統啟動項
編輯 /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s
當然,並不是每個人都喜歡這種啟動方式,你可以用你最習慣的方式;或者把它安裝為服務。
其他
1、修改cache 緩衝目錄的許可權。
#chown -R squid:squid /home/cache
我的cache緩衝目錄是 /home/cache,squid執行使用者和使用者組是 squid,squid。
2、修改squid 日誌目錄的許可權
#chown -R squid:squid /usr/local/squid/var/logs
這一步並不是適合每一個使用squid的使用者.意為讓squid有許可權在該目錄進行寫操作 。
例如產生 access.log cache.log store.log
3、查看你的日誌文檔。
#more /usr/local/squid/var/logs/access.log | grep TCP_MEM_HIT
該指令可以看到在squid運行過程中,有那些檔案被squid緩衝到記憶體中,並返回給訪問使用者。
#more /usr/local/squid/var/logs/access.log | grep TCP_HIT
該指令可以看到在squid運行過程中,有那些檔案被squid緩衝到cache目錄中,並返回給訪問使用者。
#more /usr/local/squid/var/logs/access.log | grep TCP_MISS
該指令可以看到在squid運行過程中,有那些檔案沒有被squid緩衝,而是現重原始伺服器擷取並返回給訪問使用者。
關於 TCP_XXXX 等參數及代表的資訊,請參看彭勇華《squid中文權威指南》13.2.1 章節。
當然,本例中的藍色文字是可以修改為其他的參數,例如你的網域名稱,同樣可以看到access.log裡關於該網域名稱的行。
4、squid -k rotate 輪換squid的記錄檔/var/log/squid,SquidProxy 伺服器記錄檔
的增長速度是驚人的,很容易十二碼滿磁碟空間導致系統不能正常工作,甚至是死機.為瞭解決記錄檔增長太快的問題,squid採用了"輪換"的方法.在squid.conf中可以通過logfile_rotate來設定檔案輪換的個數,如:
logfile_rotate 10 ,輪換的工作一般用crontab定時器完在周期性的日誌輪換,例如每周六淩晨2:00進行日誌輪換,則執行如下命令: crontab -e
0 2 * * 6 squid -k rotate
小貼士:Squid預設的錯誤提示資訊為英文,對於英文不好的使用者來說,實在不方便.在/etc/squid/squid.conf裡添加如下:
error_directory /usr/share/squid/errors/Simplify_Chinese 即可顯示中文的錯誤提示。