程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> windows上使用squid搭建代理服務器

windows上使用squid搭建代理服務器

編輯:關於PHP編程

windows上使用squid搭建代理服務器


本文中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中,本文中所使用環境如下:

開啟如下訪問控制[plain]view plaincopy
  1. aclallsrcall
  2. aclmanagerprotocache_object
  3. acllocalhostsrc127.0.0.1/32
  4. aclto_localhostdst127.0.0.0/8
  5. acllocalnetsrc172.16.65.231/255.255.0.0指定本地網絡及掩碼

開啟訪問端口[plain]view plaincopy
  1. aclSSL_portsport443
  2. aclSafe_portsport80#http
  3. aclSafe_portsport21#ftp
  4. aclSafe_portsport443#https
  5. aclSafe_portsport70#gopher
  6. aclSafe_portsport210#wais
  7. aclSafe_portsport1025-65535#unregisteredports
  8. aclSafe_portsport280#http-mgmt
  9. aclSafe_portsport488#gss-http
  10. aclSafe_portsport591#filemaker
  11. aclSafe_portsport777#multilinghttp
  12. aclCONNECTmethodCONNECT

開啟訪問控制,請一定要注意順序[plain]view plaincopy
  1. http_accessallowmanagerlocalhost
  2. http_accessdenymanager
  3. http_accessdeny!Safe_ports
  4. http_accessdenyCONNECT!SSL_ports
  5. http_accessallowall
  6. http_accessallowlocalnet
  7. http_accessdenyall

指定SQUID在80端口偵聽, vhost 指定使用加速模式,http_prot默認應該是3128,可以在配置文件中搜索http_prot來查看[plain]view plaincopy
  1. http_port80vhost

172.20.65.203後台WEB SERVER, parent指父節點, 80 指後台網站的端口, 0 ICP 服務端口,no-query originserver 獲取緩存時的選項[plain]view plaincopy
  1. cache_peer172.20.65.203parent800no-queryoriginserver

緩存設置[plain]view plaincopy
  1. maximum_object_size_in_memory1024KB
  2. cache_dirufsd:/squid/var/cache102416256注意路徑
  3. maximum_object_size4096KB
  4. cache_swap_low90
  5. cache_swap_high95

日志設置[plain]view plaincopy
  1. access_logd:/squid/var/logs/access.logsquid訪問日志
  2. cache_logd:/squid/var/logs/cache.log
  3. cache_store_logd:/squid/var/logs/store.log
  4. emulate_httpd_logon

控制頁面緩存內容[plain]view plaincopy
  1. refresh_pattern^ftp:144020%10080
  2. refresh_pattern^gopher:14400%1440
  3. refresh_pattern-i(/cgi-bin/|\?)00%0
  4. refresh_pattern.020%4320
  5. refresh_pattern-i\.css$2050%120reload-into-ims
  6. refresh_pattern-i\.xml$2050%120reload-into-ims
  7. refresh_pattern-i\.html$2090%120reload-into-ims
  8. refresh_pattern-i\.jpg$2090%120reload-into-ims
  9. refresh_pattern-i\.png$2090%120reload-into-ims
  10. refresh_pattern-i\.gif$2090%120ignore-reload
  11. refresh_pattern-i\.js$2090%120reload-into-ims
  12. refresh_pattern-i\.htm$2090%120reload-into-ims

設置郵箱
[plain]view plaincopy
  1. cache_mgrwebmaster_breeze

設置本地主機文件[plain]view plaincopy
  1. hosts_filec:/windows/system32/drivers/etc/hosts

7、安裝服務
將squid安裝為服務,命令格式:[plain]view plaincopy
  1. squid-i[-fconfigfile][-nservicename],如c:\squid\sbin\squid-i-nSquid_Proxy

8、初始化緩存目錄
[plain]view plaincopy
  1. c:\squid\sbin\squid-z

9、啟動Squid_Proxy服務
運行services.msc打開服務窗口,選擇Squid_Proxy服務 ,如果啟動過程出錯90%是配置文件出現問題。

10、squid命令
[plain]view plaincopy
  1. squid-kreconfigure//啟用新的配置文件
  2. squid-krotate//截斷日志
  3. squid-kshutdown//stopsquid
  4. 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,Squid代理服務器日志文件
的增長速度是驚人的,很容易點球滿磁盤空間導致系統不能正常工作,甚至是死機.為了解決日志文件增長太快的問題,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 即可顯示中文的錯誤提示。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved