Squid基礎與配置(轉)

post0發表於2007-08-10
Squid基礎與配置(轉)[@more@]

一、Squid入門

  1.Squid是什麼?

  Squid是一種用來緩衝Internet資料的軟體。它是這樣實現其功能的,接受來自人們需要下載的目標(object)的請求並適當地處理這些請求。也就是說,如果一個人想下載一web頁面,他請求Squid為他取得這個頁面。Squid隨之連線到遠端伺服器(比如:http: //squid.nlanr.net/)並向這個頁面發出請求。然後,Squid顯式地聚集資料到客戶端機器,而且同時複製一份。當下一次有人需要同一頁面時,Squid可以簡單地從磁碟中讀到它,那樣資料迅即就會傳輸到客戶機上。當前的Squid可以處理HTTP,FTP,GOPHER,SSL和 WAIS等協議。但它不能處理如POP,NNTP,RealAudio以及其它型別的東西。

  2.Internet緩衝的一些概念

  你可能會想到一些問題:緩衝有多大的用處?什麼時候目標(object)應該或者不應該被緩衝?例如,緩衝信用卡號碼是完全不適合的,指令碼檔案的執行結果在遠端伺服器端,站點經常更新(象)或者甚至站點不允許緩衝,這些情況也都是不適合緩衝的。

  Squid處理各種情況是不錯的(當然,這需要遠端站點按標準形式工作)。

  可執行的cgi-bin指令碼檔案不被緩衝,返回正確頁首的頁面是在一段限制了的時間內被緩衝,而且你可以規定特殊的規則以確定什麼是可以或不可以被緩衝的,還有緩衝的時間為多長。

  談到緩衝的用處有多大,這要看Internet的容量大小,各有不同。對於小型的緩衝區(幾轉磁碟空間)來說,返回值非常高(達到 25%)。這個空間緩衝經常訪問的站點,如netscape,cnn和其它一些類似情況的站點。如果你增加一倍緩衝的磁碟空間,但你不會成倍增加你的命中率。這是因為你開始緩衝網路中剩餘部分時,這些通常時很大的而且很少被訪問。一個非常大的高速緩衝區,有20轉左右,可能返回值仍小於50%,除非你對儲存資料的時間長短經常改變(一般地你不要分配20轉的磁碟空間,因為頁面很快就會過時,應該被刪除掉)。

  我們在這裡說的目標(object)指的是可儲存的web頁面或其它類似的可下載頁面(ftp檔案或目錄內容也稱為目標(object))。

  3.Squid執行在什麼系統上?

  Squid可執行在大多數Unix和OS/2版本的系統之上,已知的可工作的有:

  AIX,Digital Unix,FreeBSD,HP-UX,Irix,Linux,NetBSD,Nextstep,SCO,Solaris

二、編譯安裝Squid

  1.Squid的未編譯版本

  我不能保證你能發現所有的Squid的未編譯版本。在ftp:squid.nlanr.net上你可以找到一些未編譯的版本,儘管它們可能不是最新的版本。

  Squid一般很容易編譯,這是因為它本身可以自動配置。唯一真正的問題是是否在你的機器上有一個編譯器。這可能發生在:你購買了商業 OS但是它未包括標準的開發選項。你可能考慮在這種情況下裝一個GNU的編譯器,如果你在/usr/include下有必需的檔案的話。你另外一個選擇可能是請求別人的幫助。你也許需要檢視“tracker database”以找到在你附近執行Squid的某人。假定他們有適合的硬體,他們很可能會幫助你的。

  1. 開始編譯之前

  執行Squid的最好方法(在我看來)是建立一個特定的使用者和組來執行它。我用相同的名字建立了一個Squid使用者和一個Squid組,並設定使用者的home目錄為/usr/local/squid。然後我用su 轉到Squid使用者,這樣檔案就都由Squid以及Squid組所有(Squid使用者主組必須為Squid)。隨後我下載Squid原始檔到/usr/local/squid/src並解包。

  這可能不是最好的安裝Squid到你的系統上的方法,但是,如果多個使用者將使用squid,你可以把他們都放在Squid組中。(當然,如果你不理解我所說的,儘可以用你自己的名義去安裝,不要以root方式,否則,你將給你的機器帶來安全上的危險。)

  2. 獲得原始碼

  Squid的源始站點是squid.nlanr.net。這裡還有許多其它的映象站點,你可以考慮從你本地的映象站點獲得它,或者在archie伺服器上搜尋。一旦你已經下載了(一般放在/usr/local/squid/src/下),你可以用以下命令解壓:

gzip -cd squid-tar.gz-fil | tar xv 或者 tar zxvf squid-tar.gz-fil

這將建立類似於以下行的目錄:/usr/local/squid/src/squid-1.1.13/(依版本而定)。

  3. 編譯Squid

  以下是編譯Squid的一般指令。你可能還要做其它的事以編譯Squid到你的系統上。通常你可以執行一個配置指令碼檔案,它指明瞭你的系統設定和你機器上的標題檔案。這樣,在解壓和解包檔案後。cd 到/usr/local/squid/src/squid-version/下並輸入:

./configure

  這裡假定你準備安裝Squid到/usr/local/squid下。你也可以用下面的方法修改你的安裝目錄:

./configure -prefix=/some/other/directory

  然後你可能要敲入:make 以及 如果編譯一切正常時,輸入make install。這將生成在後面將要描述的目錄並安裝檔案到目錄下。

三、Squid的基本配置

  1. 目錄結構

   Squid通常建立幾個目錄。它們一般如下:

/usr/local/squid

/bin

/cache

/etc

/logs/

/src (這是我們早些時候建立的)

/bin包括Squid本身的程式,以及其它程式如ftpget,它可以被Squid用來執行各種功能。

/cache/目錄是實際緩衝資料的存放區。你可能要考慮把剩餘緩衝放到不同分割槽去,或甚至是不同的磁碟。它包含的目錄如以下行的形式:/00/ /01/ /02/ 和/03/ 這些又包括更多的子目錄,最終是緩衝的實際資料。儲存資料在多個目錄下意味著從大的緩衝區取資料仍然很快,因為你的作業系統要讀一個包含10000個檔案的目錄會需要很長的時間。

/etc/包含squid.conf檔案,它是唯一的Squid配置檔案。

/logs/目錄可能會很大,特別是如果你包含同屬時,它們會查詢你每一次連線,這可以使你的log檔案雙倍增加。注意在cache目錄下也有一個/log/檔案,但是你不能刪除或移動它。它是上面討論的/usr/local/squid/cache/目錄的一個索引。(這與IE的cache有些相似。)

/src/一般包括你執行Squid版本的原始檔。

  2. 基本配置

  所有的Squid配置集中到一個檔案----squid.conf。下面將詳細討論僅作為一個緩衝代理伺服器的Squid的配置,而不是把它作為一個http加速器。

  以下是一個最基本的配置檔案:

#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

  這個配置允許所有的人訪問緩衝區,並建立一個100M的緩衝區,使用8M的記憶體,保持最小型的logs,而且儲存所有檔案到預設區域,這一般指的是所有檔案將以Squid使用者,Squid組的名義儲存到“/usr/local/squid/cache”中。所有客戶請求將來自於3128 埠,並且所有“內部緩衝(inter-cache)”流量將走UDP埠3130。注意這個配置檔案允許所有人訪問你的緩衝機器,這可能不是你所希望的,但是至少它可以正常工作。

  3. 執行Squid

  Squid由一個指令碼正常執行,這個指令碼在它的程式死掉後重啟Squid。這裡有指令碼的兩種版本:/usr/local/squid/bin/RunCache 和 /usr/local/squid/bin/RunAccel 。

RunCache指令碼一般在前臺執行,所以啟動Squid,輸入以下內容:

% /usr/local/squid/bin/RunCache& %

然後用以下命令檢視主Squid log檔案/usr/local/squid/logs/cache.log

% more /usr/local/squid/logs/cache.log

  你將看到Squid啟動的相關資訊,如下行所示:

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...

如果你沒有看見任何關於FATAL錯誤的資訊,Squid現在就可以很高興地在你的機器上執行了。

  下面將配置你的瀏覽器,你可以好好地試一下哦!

  4. 客戶端軟體的基本配置

   以下是針對瀏覽器的基本配置:

   Netscape(4.5以上版本):

從Edit選單項中選擇Preferences項。在Advanced中Proxies頁,點選按鈕進入Proxy配置手冊,然後再點選View 按鈕。對每項你的Squid伺服器支援的協議項(預設有HTTP,FTP和gopher等)中填入Squid伺服器的主機名或IP地址,同時在Port欄中填入Squid伺服器的HTTP埠號(預設為3128)。對你的Squid不支援的協議,可以讓這些欄空著。

  IE(5.0以上中文版本):

在工具選單項中選擇Internet選項,然後點選連線頁,再按區域網設定按鈕選擇使用代理伺服器選項,進入高階專案編輯。然後可以看到與Netscape代理伺服器設定類似的介面,按照前面所述的方法分別填入相應項即可。

  一般Unix下配置:

  如果你使用可以允許你訪問web的Unix程式(包括wget,lynx和mosaic等),你可以設定shell變數,透過這些變數可以配置好代理。

  如果你使用的shell是tcsh或csh,命令如下:

% setenv http_proxy

% setenv gopher_proxy

% setenv ftp_proxy

  現在你就可以使用你的瀏覽器與緩衝連線以下載頁面了。為了檢查透過緩衝是否工作正常,可以檢視/usr/local/squid/logs/access.log檔案的內容,使用命令如下:more /usr/local/squid/logs/access.log。你可以看到所有你進行的訪問資訊都顯示在該檔案中。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940652/,如需轉載,請註明出處,否則將追究法律責任。

相關文章