作 者: 戴專 一、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)應該或者不應該被緩沖?例如,緩沖信用卡號碼是完全不適合的,腳本文件的執行結果在遠程服務器端,站點經常更新(象www.cnn.com)或者甚至站點不允許緩沖,這些情況也都是不適合緩沖的。 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 http://mycache.example.com:3128/ % setenv gopher_proxy http://mycache.example.com:3128/ % setenv ftp_proxy http://mycache.example.com:3128/ 現在你就可以使用你的浏覽器與緩沖連接以下載頁面了。為了檢查通過緩沖是否工作正常,可以查看/usr/local/squid/logs/access.log文件的內容,使用命令如下:more /usr/local/squid/logs/access.log。你可以看到所有你進行的訪問信息都顯示在該文件中。