一、Squid入門
1.Squid是什么?
Squid是一種用來緩沖Internet數(shù)據(jù)的軟件。它是這樣實(shí)現(xiàn)其功能的,接受來自人們需要下載的目標(biāo)(object)的請(qǐng)求并適當(dāng)?shù)靥幚磉@些請(qǐng)求。也就是說,如果一個(gè)人想下載一web頁(yè)面,他請(qǐng)求Squid為他取得這個(gè)頁(yè)面。Squid隨之連接到遠(yuǎn)程服務(wù)器(比如:http://squid.nlanr.net/)并向這個(gè)頁(yè)面發(fā)出請(qǐng)求。然后,Squid顯式地聚集數(shù)據(jù)到客戶端機(jī)器,而且同時(shí)復(fù)制一份。當(dāng)下一次有人需要同一頁(yè)面時(shí),Squid可以簡(jiǎn)單地從磁盤中讀到它,那樣數(shù)據(jù)迅即就會(huì)傳輸?shù)娇蛻魴C(jī)上。當(dāng)前的Squid可以處理HTTP,F(xiàn)TP,GOPHER,SSL和WAIS等協(xié)議。但它不能處理如POP,NNTP,RealAudio以及其它類型的東西。
2.Internet緩沖的一些概念
你可能會(huì)想到一些問題:緩沖有多大的用處?什么時(shí)候目標(biāo)(object)應(yīng)該或者不應(yīng)該被緩沖?例如,緩沖信用卡號(hào)碼是完全不適合的,腳本文件的執(zhí)行結(jié)果在遠(yuǎn)程服務(wù)器端,站點(diǎn)經(jīng)常更新(象www.cnn.com)或者甚至站點(diǎn)不允許緩沖,這些情況也都是不適合緩沖的。
Squid處理各種情況是不錯(cuò)的(當(dāng)然,這需要遠(yuǎn)程站點(diǎn)按標(biāo)準(zhǔn)形式工作)。
可執(zhí)行的cgi-bin腳本文件不被緩沖,返回正確頁(yè)眉的頁(yè)面是在一段限制了的時(shí)間內(nèi)被緩沖,而且你可以規(guī)定特殊的規(guī)則以確定什么是可以或不可以被緩沖的,還有緩沖的時(shí)間為多長(zhǎng)。
談到緩沖的用處有多大,這要看Internet的容量大小,各有不同。對(duì)于小型的緩沖區(qū)(幾轉(zhuǎn)磁盤空間)來說,返回值非常高(達(dá)到25%)。這個(gè)空間緩沖經(jīng)常訪問的站點(diǎn),如netscape,cnn和其它一些類似情況的站點(diǎn)。如果你增加一倍緩沖的磁盤空間,但你不會(huì)成倍增加你的命中率。這是因?yàn)槟汩_始緩沖網(wǎng)絡(luò)中剩余部分時(shí),這些通常時(shí)很大的而且很少被訪問。一個(gè)非常大的高速緩沖區(qū),有20轉(zhuǎn)左右,可能返回值仍小于50%,除非你對(duì)保存數(shù)據(jù)的時(shí)間長(zhǎng)短經(jīng)常改變(一般地你不要分配20轉(zhuǎn)的磁盤空間,因?yàn)轫?yè)面很快就會(huì)過時(shí),應(yīng)該被刪除掉)。
我們?cè)谶@里說的目標(biāo)(object)指的是可保存的web頁(yè)面或其它類似的可下載頁(yè)面(ftp文件或目錄內(nèi)容也稱為目標(biāo)(object))。
3.Squid運(yùn)行在什么系統(tǒng)上?
Squid可運(yùn)行在大多數(shù)Unix和OS/2版本的系統(tǒng)之上,已知的可工作的有:
AIX,Digital Unix,F(xiàn)reeBSD,HP-UX,Irix,Linux,NetBSD,Nextstep,SCO,Solaris
二、編譯安裝Squid
1.Squid的未編譯版本
我不能保證你能發(fā)現(xiàn)所有的Squid的未編譯版本。在ftp:squid.nlanr.net上你可以找到一些未編譯的版本,盡管它們可能不是最新的版本。
Squid一般很容易編譯,這是因?yàn)樗旧砜梢宰詣?dòng)配置。唯一真正的問題是是否在你的機(jī)器上有一個(gè)編譯器。這可能發(fā)生在:你購(gòu)買了商業(yè)OS但是它未包括標(biāo)準(zhǔn)的開發(fā)選項(xiàng)。你可能考慮在這種情況下裝一個(gè)GNU的編譯器,如果你在/usr/include下有必需的文件的話。你另外一個(gè)選擇可能是請(qǐng)求別人的幫助。你也許需要查看“tracker database”以找到在你附近運(yùn)行Squid的某人。假定他們有適合的硬件,他們很可能會(huì)幫助你的。
1. 開始編譯之前
運(yùn)行Squid的最好方法(在我看來)是創(chuàng)建一個(gè)特定的用戶和組來運(yùn)行它。我用相同的名字創(chuàng)建了一個(gè)Squid用戶和一個(gè)Squid組,并設(shè)置用戶的home目錄為/usr/local/squid。然后我用su 轉(zhuǎn)到Squid用戶,這樣文件就都由Squid以及Squid組所有(Squid用戶主組必須為Squid)。隨后我下載Squid源文件到/usr/local/squid/src并解包。
這可能不是最好的安裝Squid到你的系統(tǒng)上的方法,但是,如果多個(gè)用戶將使用squid,你可以把他們都放在Squid組中。(當(dāng)然,如果你不理解我所說的,盡可以用你自己的名義去安裝,不要以root方式,否則,你將給你的機(jī)器帶來安全上的危險(xiǎn)。)
2. 獲得源碼
Squid的源始站點(diǎn)是squid.nlanr.net。這里還有許多其它的鏡像站點(diǎn),你可以考慮從你本地的鏡像站點(diǎn)獲得它,或者在archie服務(wù)器上搜索。一旦你已經(jīng)下載了(一般放在/usr/local/squid/src/下),你可以用以下命令解壓:
gzip -cd squid-tar.gz-fil | tar xv 或者 tar zxvf squid-tar.gz-fil
這將創(chuàng)建類似于以下行的目錄:/usr/local/squid/src/squid-1.1.13/(依版本而定)。
3. 編譯Squid
以下是編譯Squid的一般指令。你可能還要做其它的事以編譯Squid到你的系統(tǒng)上。通常你可以運(yùn)行一個(gè)配置腳本文件,它指明了你的系統(tǒng)設(shè)置和你機(jī)器上的標(biāo)題文件。這樣,在解壓和解包文件后。cd 到/usr/local/squid/src/squid-version/下并輸入:
./configure
這里假定你準(zhǔn)備安裝Squid到/usr/local/squid下。你也可以用下面的方法修改你的安裝目錄:
./configure -prefix=/some/other/directory
然后你可能要敲入:make 以及 如果編譯一切正常時(shí),輸入make install。這將生成在后面將要描述的目錄并安裝文件到目錄下。
三、Squid的基本配置
1. 目錄結(jié)構(gòu)
Squid通常創(chuàng)建幾個(gè)目錄。它們一般如下:
/usr/local/squid
/bin
/cache
/etc
/logs/
/src (這是我們?cè)缧r(shí)候創(chuàng)建的)
/bin包括Squid本身的程序,以及其它程序如ftpget,它可以被Squid用來執(zhí)行各種功能。
/cache/目錄是實(shí)際緩沖數(shù)據(jù)的存放區(qū)。你可能要考慮把剩余緩沖放到不同分區(qū)去,或甚至是不同的磁盤。它包含的目錄如以下行的形式:/00/ /01/ /02/ 和/03/ 這些又包括更多的子目錄,最終是緩沖的實(shí)際數(shù)據(jù)。存儲(chǔ)數(shù)據(jù)在多個(gè)目錄下意味著從大的緩沖區(qū)取數(shù)據(jù)仍然很快,因?yàn)槟愕牟僮飨到y(tǒng)要讀一個(gè)包含10000個(gè)文件的目錄會(huì)需要很長(zhǎng)的時(shí)間。
/etc/包含squid.conf文件,它是唯一的Squid配置文件。
/logs/目錄可能會(huì)很大,特別是如果你包含同屬時(shí),它們會(huì)查詢你每一次連接,這可以使你的log文件雙倍增加。注意在cache目錄下也有一個(gè)/log/文件,但是你不能刪除或移動(dòng)它。它是上面討論的/usr/local/squid/cache/目錄的一個(gè)索引。(這與IE的cache有些相似。)
/src/一般包括你運(yùn)行Squid版本的源文件。
2. 基本配置
所有的Squid配置集中到一個(gè)文件----squid.conf。下面將詳細(xì)討論僅作為一個(gè)緩沖代理服務(wù)器的Squid的配置,而不是把它作為一個(gè)http加速器。
以下是一個(gè)最基本的配置文件:
#squid.conf - a very basic config file for squid
#Turn logging to it's lowest level
debug_options ALL,1
#defines a group (or Access Control List) that includes all IP
#addresses
acl all src 0.0.0.0/0.0.0.0
#allow all sites to use connect to us via HTTP
http_access allow all
#allow all sites to use us as a sibling
icp_access allow all
#test the following sites to check that we are connected
dns_testnames internic.net usc.edu cs.colorado.edu mit.edu yale.edu
#run as the squid user
cache_effective_user squid squid
#otherwise, you can uncomment the below line and comment the one out.
# this will run as use "nobody" with the group "nogrtoup"
cache_effective_user nobody nogroup
這個(gè)配置允許所有的人訪問緩沖區(qū),并創(chuàng)建一個(gè)100M的緩沖區(qū),使用8M的內(nèi)存,保持最小型的logs,而且存儲(chǔ)所有文件到默認(rèn)區(qū)域,這一般指的是所有文件將以Squid用戶,Squid組的名義存儲(chǔ)到“/usr/local/squid/cache”中。所有客戶請(qǐng)求將來自于3128端口,并且所有“內(nèi)部緩沖(inter-cache)”流量將走UDP端口3130。注意這個(gè)配置文件允許所有人訪問你的緩沖機(jī)器,這可能不是你所希望的,但是至少它可以正常工作。
3. 運(yùn)行Squid
Squid由一個(gè)腳本正常運(yùn)行,這個(gè)腳本在它的進(jìn)程死掉后重啟Squid。這里有腳本的兩種版本:/usr/local/squid/bin/RunCache 和 /usr/local/squid/bin/RunAccel 。
RunCache腳本一般在前臺(tái)運(yùn)行,所以啟動(dòng)Squid,輸入以下內(nèi)容:
% /usr/local/squid/bin/RunCache& %
然后用以下命令查看主Squid log文件/usr/local/squid/logs/cache.log
% more /usr/local/squid/logs/cache.log
你將看到Squid啟動(dòng)的相關(guān)信息,如下行所示:
97/02/24 19:34:52| Starting Squid Cache version 1.1.10 for i586-pc-linux-gnu...
97/02/24 19:34:52| With 256 file descriptors available
97/02/24 19:34:52| Initializing IP Cache...
如果你沒有看見任何關(guān)于FATAL錯(cuò)誤的信息,Squid現(xiàn)在就可以很高興地在你的機(jī)器上運(yùn)行了。
下面將配置你的瀏覽器,你可以好好地試一下哦!
4. 客戶端軟件的基本配置
以下是針對(duì)瀏覽器的基本配置:
Netscape(4.5以上版本):
從Edit菜單項(xiàng)中選擇Preferences項(xiàng)。在Advanced中Proxies頁(yè),點(diǎn)擊按鈕進(jìn)入Proxy配置手冊(cè),然后再點(diǎn)擊View按鈕。對(duì)每項(xiàng)你的Squid服務(wù)器支持的協(xié)議項(xiàng)(默認(rèn)有HTTP,F(xiàn)TP和gopher等)中填入Squid服務(wù)器的主機(jī)名或IP地址,同時(shí)在Port欄中填入Squid服務(wù)器的HTTP端口號(hào)(默認(rèn)為3128)。對(duì)你的Squid不支持的協(xié)議,可以讓這些欄空著。
IE(5.0以上中文版本):
在工具菜單項(xiàng)中選擇Internet選項(xiàng),然后點(diǎn)擊連接頁(yè),再按局域網(wǎng)設(shè)置按鈕選擇使用代理服務(wù)器選項(xiàng),進(jìn)入高級(jí)項(xiàng)目編輯。然后可以看到與Netscape代理服務(wù)器設(shè)置類似的界面,按照前面所述的方法分別填入相應(yīng)項(xiàng)即可。
一般Unix下配置:
如果你使用可以允許你訪問web的Unix程序(包括wget,lynx和mosaic等),你可以設(shè)置shell變量,通過這些變量可以配置好代理。
如果你使用的shell是tcsh或csh,命令如下:
% setenv http_proxy http://mycache.example.com:3128/
% setenv gopher_proxy http://mycache.example.com:3128/
% setenv ftp_proxy http://mycache.example.com:3128/
現(xiàn)在你就可以使用你的瀏覽器與緩沖連接以下載頁(yè)面了。為了檢查通過緩沖是否工作正常,可以查看/usr/local/squid/logs/access.log文件的內(nèi)容,使用命令如下:more /usr/local/squid/logs/access.log。你可以看到所有你進(jìn)行的訪問信息都顯示在該文件中。