国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Squid中文權(quán)威指南第四章

Squid的配置文件相對規(guī)范。它與其他許多unix程序相似。每行以配置指令開始,后面跟著數(shù)字值或關(guān)鍵字。在讀取配置文件時,squid忽略空行和注釋掉的行(以#開始)。如下是一些配置行示例:

cache_log /squid/var/cache.log            # define the localhost ACL            acl Localhost src 127.0.0.1/32            connect_timeout 2 minutes            log_fqdn on

某些指令取唯一值。在這些情形下,重復(fù)賦予該指令不同的值,將覆蓋前面的值。例如,下面是一個連接超時值。第一行無效,因為第二行覆蓋了它:

connect_timeout 2 minutes            connect_timeout 1 hour

另外,某些指令取列表值。在這些情形下,每一個新增的值都有效。"擴(kuò)展方式"指令以這種方法工作:

extension_methods UNGET            extension_methods UNPUT            extension_methods UNPOST

對這些基于列表的指令,你通常能在同一行中賦予多個值:

extension_methods UNGET UNPUT UNPOST

許多指令有通用類型。例如,連接超時值是一個時間規(guī)范,在數(shù)字后面跟著時間單元。例如:

connect_timeout 3 hours            client_lifetime 4 days            negative_ttl 27 minutes

類似的,大量的指令指向文件大小或者內(nèi)存額度。例如,你可以這樣編寫大小規(guī)范:十進(jìn)制數(shù)字后面跟bytes,KB,MB或GB.例如:

minimum_object_size 12 bytes            request_header_max_size 10 KB            maximum_object_size 187 MB

另一種值得提起的類型是觸發(fā)器,它的值是on或者off。許多指令使用該類型。例如:

server_persistent_connections on            strip_query_terms off            prefer_direct on

通常,配置文件指令能以任何順序出現(xiàn)。然而,如果某個指令指向的值被其他指令所定義,那么順序就很重要。訪問控制列表是個好的例子。acl被用在http_access規(guī)則之前必須被定義:

acl Foo src 1.2.3.4            http_access deny Foo

squid.conf文件里的許多東西是大小寫敏感的,例如指令名。你不能將http_port寫成HTTP_port。

默認(rèn)的squid.conf文件包含了對每個指令的大量注釋,以及指令的默認(rèn)值。例如:

#  TAG: persistent_request_timeout            #       How long to wait for the next HTTP request on a persistent            #       connection after the previous request completes.            #            #Default:            # persistent_request_timeout 1 minute

每次安裝squid后,當(dāng)前默認(rèn)配置文件存放在$prefix/etc目錄下的squid.conf.default。既然指令每次都有所改變,你能參考該文檔,以獲取最近的更新。

該章剩下的部分是關(guān)于在開始運行squid之前,你必須知道的少數(shù)指令。

4.2 User ID

你可能知道,unix進(jìn)程和文件擁有文件和組屬主的屬性。你必須選擇某個用戶和組給squid。該用戶和組的組合,必須對大部分squid相關(guān)的文件和目錄有讀和寫的權(quán)限。

我高度推薦創(chuàng)建名為"squid"的用戶和組。這避免了某人利用squid來讀取系統(tǒng)中的其他文件。假如不止一個人擁有對squid的管理權(quán)限,你可以將他們加到squid組里。

unix進(jìn)程繼承了它們父進(jìn)程的屬主屬性。那就是說,假如你以joe用戶來啟動squid,squid也以joe來運行。假如你不想以joe來運行squid,你需要預(yù)先改變你的用戶ID。這是su命令的典型功能。例如:

joe% su - squid            squid% /usr/local/squid/sbin/squid

不幸的是,運行squid并非總是如此簡單。在某些情況下,你必須以root來啟動squid,這依賴于你的配置。例如,僅僅root能綁定TCP套接字到特權(quán)端口上,如80。假如你必須以root來啟動squid,你必須設(shè)置cache_effective_user指令。它告訴squid,在執(zhí)行完需要特別權(quán)限的任務(wù)后,變成哪個用戶。例如:

cache_effective_user squid

你提供的該名字必須是有效用戶(在/etc/passwd文件里)。請注意僅僅當(dāng)你以root來啟動squid時,你才需要用到該指令。僅僅root有能力來隨意改變用戶身份。假如你以joe來啟動squid,它不能改變到squid用戶。

你可能嘗試不設(shè)置cache_effective_user,直接以root來運行squid。假如你試過,你會發(fā)現(xiàn)squid拒絕運行。這違背了安全規(guī)則。假如外部攻擊者有能力危及或利用squid,他能獲取對系統(tǒng)的全部訪問權(quán)。盡管我們努力使squid安全和少bug,但還是穩(wěn)重點好。

假如你沒有設(shè)置cache_effective_user,以root來啟動squid,squid使用nobody作為默認(rèn)值。不管你選擇什么用戶ID,請確認(rèn)它有對下面目錄的讀訪問權(quán):$prefix/etc,$prefix/libexec,$prefix/share.該用戶ID也必須有對日志文件和緩存目錄的寫訪問權(quán)。

squid也有一個cache_effective_group指令,但你也許不必設(shè)置它。默認(rèn)的,squid使用cache_effective_user的默認(rèn)組(從/etc/passwd文件讀取)。

4.3 端口號

http_port指令告訴squid在哪個端口偵聽HTTP請求。默認(rèn)端口是3128:

http_port 3128

假如你將squid作為加速器運行(見15章),你也許該將它設(shè)為80。

你能使用附加的http_port行,來指示squid偵聽在多個端口上。假如你必須支持客戶組(它們被配置得不一致),這點就經(jīng)常有用。例如,來自某個部門的瀏覽器發(fā)送請求到3128,然而另一個部門使用80端口。簡單的將兩個端口號列舉出來:

http_port 3128            http_port 8080

你也能使用http_port指令來使squid偵聽在指定的接口地址上。當(dāng)squid作為防火墻運行時,它有兩個網(wǎng)絡(luò)接口:一個內(nèi)部的和一個外部的。你可能不想接受來自外部的http請求。為了使squid僅僅偵聽在內(nèi)部接口上,簡單的將IP地址放在端口號前面:

http_port 192.168.1.1:3128

4.4 日志文件路徑

我將在第13章討論所有squid的日志細(xì)節(jié)。你現(xiàn)在你關(guān)注的唯一事情是,squid將它的日志放在何處。默認(rèn)的日志目錄是squid安裝位置下的logs目錄。例如,假如你在./configure時沒有使用--prefix=選項,那么默認(rèn)的日志文件路徑是/usr/local/squid/var/logs.

你必須確認(rèn)日志文件所存放的磁盤位置空間足夠。在squid寫日志時如果接受到錯誤,它會退出和重啟。該行為的主要理由應(yīng)引起你的注意。squid想確認(rèn)你不會丟失任何重要的日志信息,特別是你的系統(tǒng)被濫用或者被攻擊時。

squid有三個主要的日志文件:cache.log,access.log,store.log.第一個文件即cache.log,包含狀態(tài)性的和調(diào)試性的消息。當(dāng)你剛開始運行squid時,你應(yīng)密切的關(guān)注該文件。假如squid拒絕運行,理由也許會出現(xiàn)在cache.log文件的結(jié)尾處。在正常條件下,該文件不會變得很大。也請注意,假如你以-s選項來運行squid,重要的cache.log消息也可被送到你的syslog進(jìn)程。通過使用cache_log指令,你可以改變該日志文件的路徑:

cache_log /squid/logs/cache.log

access.log文件包含了對squid發(fā)起的每個客戶請求的單一行。每行平均約150個字節(jié)。也就是說,在接受一百萬條客戶請求后,它的體積約是150M。請使用cache_access_log指令來改變該日志文件的路徑:

cache_access_log /squid/logs/access.log

假如因為某些理由,你不想squid記錄客戶端請求日志,你能指定日志文件的路徑為/dev/null. store.log文件對大多數(shù)cache管理員來說并非很有用。它包含了進(jìn)入和離開緩存的每個目標(biāo)的記錄。平均記錄大小典型的是175-200字節(jié)。然而,squid不在store.log里對cache點擊創(chuàng)建接口,所以它比access.log包含少得多的記錄。請使用cache_store_log指令來改變它的位置:

cache_store_log /squid/logs/store.log

通過指定路徑為none,你能輕易的完全禁止store.log日志:

cache_store_log none

假如你不小心,squid的日志文件增加沒有限制。某些操作系統(tǒng)對單個文件強制執(zhí)行2G的大小限制,即使你有充足的磁盤空間。超過該限制會導(dǎo)致寫錯誤,這樣squid就會退出。為了保證日志文件大小合理,你應(yīng)創(chuàng)建任務(wù)來有規(guī)律的重命名和打包日志。squid有內(nèi)建功能來使這個容易做到。請見13.7章關(guān)于日志輪循的解釋。

4.5 訪問控制

在第6章里有更多的關(guān)于訪問控制的描述?,F(xiàn)在,我只講述少量的訪問控制方法,以使熱心的讀者能快速開始使用squid。

squid默認(rèn)的配置文件拒絕每一個客戶請求。在任何人能使用代理之前,你必須在squid.conf文件里加入附加的訪問控制規(guī)則。最簡單的方法就是定義一個針對客戶IP地址的ACL和一個訪問規(guī)則,告訴squid允許來自這些地址的HTTP請求。squid有許多不同的ACL類型。src類型匹配客戶IP地址,squid會針對客戶HTTP請求檢查http_access規(guī)則。這樣,你需要增加兩行:

acl MyNetwork src 192.168.0.0/16            http_access allow MyNetwork

請將這些行放在正確的位置。http_access的順序非常重要,但是acl行的順序你不必介意。你也該注意默認(rèn)的配置文件包含了一些重要的訪問控制,你不應(yīng)該改變或刪除它們,除非你完全理解它們的意義。在你第一次編輯squid.conf文件時,請看如下注釋:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

在該注釋之后,以及"http_access deny all"之前插入你自己的新規(guī)則。為了徹底說明,如下是一個合理的初始訪問控制配置,包括推薦的默認(rèn)控制和早先的例子:

acl All src 0/0            acl Manager proto cache_object            acl Localhost src 127.0.0.1/32            acl Safe_ports port 80 21 443 563 70 210 280 488 591 777 1025-65535            acl SSL_ports 443 563            acl CONNECT method CONNECT            acl MyNetwork src 192.168.0.0/16            http_access allow Manager Localhost            http_access deny Manager            http_access deny !Safe_ports            http_access deny CONNECT !SSL_ports            http_access allow MyNetwork            http_access deny All

4.6 可見主機名

希望你不必?fù)?dān)心visible_hostname指令。然而,假如squid不能發(fā)現(xiàn)它所運行的機器的主機名,你就必須設(shè)置它。如果發(fā)生這樣的事,squid抱怨和拒絕運行:

% squid -Nd1            FATAL: Could not determine fully qualified hostname.  Please set 'visible_hostname'

有大量的理由使squid需要知道主機名:

  • 主機名出現(xiàn)在squid的錯誤消息里,這幫助用戶驗證潛在問題的源頭。
  • 主機名出現(xiàn)在squid轉(zhuǎn)發(fā)的cache單元的HTTP Via頭里。當(dāng)請求到達(dá)原始主機時,Via頭包含了在傳輸過程中涉及的代理列表。squid也使用Via頭來檢測轉(zhuǎn)發(fā)環(huán)路。我將在第10章里討論轉(zhuǎn)發(fā)環(huán)路。
  • squid對特定事務(wù)使用內(nèi)部URL,例如FTP目錄列表的圖標(biāo)。當(dāng)squid對FTP目錄產(chǎn)生HTML頁面時,它插入小圖標(biāo)用以指明該目錄中的文件類型。圖標(biāo)URL包含了cache的主機名,以便web瀏覽器能直接從squid請求它們。
  • 每個從squid響應(yīng)的HTTP回復(fù)包含了X-Cache頭。這并非官方HTTP頭。它是一個擴(kuò)展頭,用以指明該響應(yīng)是cache點擊還是cache丟失。既然請求和響應(yīng)可能經(jīng)過多個cache,每個X-Cache頭包含了cache報告點擊或丟失的名字。如下是一個通過2個cache的響應(yīng)示例:
  • HTTP/1.0 200 OK                Date: Mon, 29 Sep 2003 22:57:23 GMT                Content-type: text/html                Content-length: 733                X-Cache: HIT from bo2.us.ircache.net                X-Cache: MISS from bo1.us.ircache.net
  • squid在啟動時試圖自動獲取主機名。首先它調(diào)用gethostname()函數(shù),這通常能返回正確的主機名。接著,squid調(diào)用gethostbyname()函數(shù)嘗試對主機名進(jìn)行DNS查詢。該函數(shù)典型的返回IP地址和系統(tǒng)的規(guī)范名。假如gethostbyname()成功,squid在錯誤消息里,Via頭里等地方使用這個規(guī)范名。
  • 因為大量的理由,squid可能不能檢測到它的規(guī)范主機名,包括:
  • 主機名可能未設(shè)置。
  • 主機名可能從DNS區(qū)域或/etc/hosts文件里丟失。
  • squid系統(tǒng)的DNS客戶端配置可能不正確或丟失。在unix系統(tǒng)上,你該檢查/etc/resolv.conf和/etc/host.conf文件。

假如你看到上述的致命錯誤,你必須修正主機名和DNS信息,或者顯式的給squid指明主機名。在大多數(shù)情況下,請確認(rèn)"hostname"命令返回一個完全規(guī)范的主機名,并且在/etc/hosts文件里增加這個接口。假如這樣不成功,請在squid.conf里設(shè)置可見主機名:

visible_hostname squid.packet-pushers.net

4.7 管理聯(lián)系信息

你應(yīng)該設(shè)置cache_mgr指令作為對用戶的幫助。它是一個email地址,假如問題發(fā)生,用戶能寫信給它。cache_mgr地址默認(rèn)出現(xiàn)在squid的錯誤消息里。例如:

cache_mgr squid@web-cache.net

4.8 下一步

在創(chuàng)建了初步的配置文件后,你多少準(zhǔn)備首次運行squid了。請遵循下面章節(jié)的建議。當(dāng)你掌握了啟動和停止squid后,你該花費一些時間來改善配置文件。你可能想增加更高級的訪問控制,這在第6章里有描述。既然我在這里沒有討論磁盤cache,你該花些時間閱讀第7和第8章。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux上squid服務(wù)的配置
squid日志3
squid訪問控制
squid反向代理作web加速-配置詳解5-訪問控制 acl指令
nginx+squid+apache web架構(gòu)
利用反向代理保護(hù)WEB服務(wù)器
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服