1. Squid3.0的安裝是很簡單的:
./configure --prefix=/usr/local/squid
make
make install
chown -R nobody.nobody /usr/local/squid/var/
/usr/local/squid/sbin/squid -z
Squid3.0的配置也不複雜:
假設我們有兩台Apache伺服器需要反向 Proxy:www.avnads.cn(IP: x.x.x.x);www.britepic.org(IP: y.y.y.y)。
如果你的Apache和Squid再同一台伺服器上,那麼要注意連接埠問題,可以讓Apache使用非80連接埠,而Squid使用80連接埠,也可以讓 Apache和Squid都使用80連接埠,只是Apache使用的是迴環地址,而Squid使用的是外網地址,此時Apache的httpd.conf裡 設定的是Listen 127.0.0.1:80。
squid.conf檔案一共有四千多行,不過大部分都是注釋,配置反向 Proxy功能大致涉及以下幾項:
acl
在檔案裡找到TAG: acl的位置,在其後加上我們的設定:
acl sites dstdomain .avnads.cn
acl sites dstdomain .britepic.org
http_access
在檔案裡找到TAG: http_access的位置,其後有一行注釋:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
我們就把自訂的規則放在這行的下面:
http_access allow sites
http_access的位置是很重要的,在下面有如下設定:
# And finally deny all other access to this proxy
http_access deny all
它會拒絕所有剩下的訪問。
http_port
在檔案裡找到TAG: http_port的位置,在其後加上我們的設定:
http_port 80 defaultsite=預設網站 vhost
一般來說,vhost就足夠了,不過加上defaultsite還是有好處的,畢竟,有的HTTP1.0用戶端不發送Host頭,在這種情況下系統有一個預設值總比沒有強。
cache_peer
在檔案裡找到TAG: cache_peer的位置,在其後加上我們的設定:
cache_peer x.x.x.x parent 80 0 no-query originserver name=foo
cache_peer y.y.y.y parent 80 0 no-query originserver name=bar
cache_peer_domain
在檔案裡找到TAG: cache_peer_domain的位置,在其後加上我們的設定:
cache_peer_domain foo www.avnads.cn
cache_peer_domain bar www.britepic.org
cache_peer_access
在檔案裡找到TAG: cache_peer_access的位置,在其後加上我們的設定:
cache_peer_access foo allow sites
cache_peer_access bar allow sites
2. 設定檔
visible_hostname www.coojin.com<br />http_port 192.168.0.10:81 vhost vport<br />cache_peer 192.168.0.9 parent 8080 0 no-query originserver name=coojin<br />cache_peer_domain coojin 192.168.0.10<br />#acl all src 0.0.0.0/0.0.0.0<br />http_access allow all<br />refresh_pattern . 0 20% 4320<br />logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt<br />cache_log /usr/local/squid/var/logs/cache.log<br />access_log /usr/local/squid/var/logs/access.log<br />pid_filename /usr/local/squid/var/logs/squid.pid<br />cache_mem 512 MB<br />maximum_object_size_in_memory 512 KB<br />max_open_disk_fds 0<br />minimum_object_size 0 KB<br />maximum_object_size 4096 KB<br />maximum_object_size_in_memory 4096 KB<br />memory_replacement_policy lru<br />cache_dir ufs /usr/local/squid/cache 512 16 256
3. 配置說明
#快取服務器的名字,可以任意<br />visible_hostname www.coojin.com<br />#伺服器連接埠<br />#設定squid為accel加速模式,vhost必須要加.否則將無法將主機頭轉寄至後端伺服器,訪問時就會出現無法找到主機頭的錯誤<br />http_port 81 accel vhost vport<br />#配置需要代理的apache伺服器<br />#定義不同的父節點,將節點設為no-query以及originserver說明這些節點是實際伺服器<br />cache_peer 127.0.0.1 parent 80 0 no-query originserver name=coojin<br />#設定不同網域名稱轉寄到不同的cache_peer上,如果沒有這項.不同網域名稱的網域名稱可能被分發到同一台伺服器上.<br />cache_peer_domain coojin localhost<br />#允許所有用戶端訪問<br />acl all src 0.0.0.0/0.0.0.0<br />http_access allow all<br />#記錄日誌<br />#日誌格式<br />logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt<br />#伺服器作業記錄<br />cache_log /usr/local/squid/var/logs/cache.log<br />#用戶端請求日誌<br />access_log /usr/local/squid/var/logs/access.log<br />#設定PID和記錄檔位置<br />pid_filename /usr/local/squid3/var/logs/squid.pid<br />#最大快取檔案大小,超過此值則不緩衝<br />maximum_object_size_in_memory 512 KB<br />max_open_disk_fds 0<br />minimum_object_size 0 KB<br />maximum_object_size 4096 KB<br />#共用記憶體大小(squid在提供服務的時候所使用的記憶體)<br />cache_mem 128 MB<br />#替換機制 (lru叫做 最近不常用的單元 unit一般就是常說的object 也就是當cache中的內容比如記憶體或硬碟達到上限時的 那麼就需要進行資料的換進和換出工作)<br />memory_replacement_policy lru<br />#儲存cache內容也就是object的物理存放點 #磁碟緩衝的類型和目錄,大小,一二級目錄的設定,這裡磁碟緩衝大小是10G<br />#ufs是一種檔案儲存體方式 因為os一般都是從記憶體擷取資料 那麼記憶體的東西必須最後寫的硬碟上~<br />#sync 同步的時候用的ufs 那麼squid也是一樣<br />#ufs一般是同時寫入記憶體和硬碟<br />#注意:size是按照M為單位的也就這個目錄中最大儲存容量的上限<br />#512M其中1層目錄16個 並且每個1層目錄下又有256個2層目錄[或者說子目錄]<br />cache_dir ufs /usr/local/squid/cache 512 16 256<br />
4. 啟動
#/usr/local/squid/sbin/squid -z
用來Creating Swap Directories
vi一個squid.sh的啟動指令碼如下:賦予可執行許可權
#!/bin/sh
#
ulimit -HSn 15000
# this script starts and stops Squid
echo 15000 > /proc/sys/fs/file-max
case "$1" in
start)
/usr/local/squid/sbin/squid -s
echo -n ' Squid'
;;
stop)
/usr/local/squid/sbin/squid -k shutdown
;;
esac
#./squid.sh start就可以啟動squid了(還有測試命令如:/usr/local/squid/sbin/squid -CNd1參考下)