squid緩存:refresh_pattern指令
refresh_pattern指令如下:
ignore-no-store ignore-ridate
以上兩個選項是為了處理http頭部信息:
Cache-Control: no-store, must-ridate
Cache-Control: no-cache, must-ridate
ignore-no-cache ignore-private
處理http頭部信息:Cache-Control: no-cache, must-ridate Pragma: no-cache
這兩行是控制瀏覽器的緩存行為的,指示瀏覽器不得緩存
以上兩個參數就是為了處理動態文件不能被緩存的問題.
eg:
refresh_pattern -i \.jpg$ 180 90% 1440 reload-into-ims ignore-no-cache
refresh_pattern -i http://xxx/jobs_nv/ajax_keywords.asp 1440 50% 10080 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-private
第一個例子是緩存jpg,第二個例子是緩存動態文件asp
ignore-reload和reload-into-ims的區別:
ignore-reload 會強行緩存,對no-cache當沒有見到,但使用 reload-into-ims,當有no-cache的請求發過來時,他會發一個http頭部回去問源服務器(上層服務器),是否有修改,如果修改就更新,如果沒有就返回給客戶.
regexp參數是大小寫敏感的正則表達式。你可以使用-i選項來使它們大小寫不敏感。squid按順序來檢查refresh_pattern行;當正則表達式之一匹配URI時,它停止搜索。
理解squid檢查不同值的順序非常重要。如下是squid的refresh_pattern算法的簡單描述:
假如響應年齡超過refresh_pattern的max值,該響應過期;
假如LM-factor少于refresh_pattern百分比值,該響應存活;
假如響應年齡少于refresh_pattern的min值,該響應存活;
其他情況下,響應過期。
在squid.conf.default里面,refresh_pattern參數下面的注釋是這樣的:
TAG: refresh_pattern
usage: refresh_pattern [-i] regex min percent max [options]
Basically a cached object is:
FRESH if expires < now, else STALE
STALE if age > max
FRESH if lm-factor < percent, else STALE
FRESH if age < min
else STALE
以上所有的時間都是以分鐘為單位計算。
· refresh_pattern指出的緩沖對象過期了,這個對象過期。
· refresh_pattern指出的緩沖對象在squid的cache緩沖的時間大于max的話,這個對象過期。
· refresh_pattern指出的緩沖對象的lm-factor大于等于percent的話,這個對象過期。
· refresh_pattern指出的緩沖對象在squid的cache緩沖的時間小于min的話,這個對象不過期。
可是,這個lm-factor到底是怎么算的?有什么具體意義? look下面的圖:
上面這張圖來自于《Squid.Definitive.Guide》第七章,對squid的LM-factor算法作出了一個很直觀的描述。
請注意這張圖的起始時間坐標:Last-Modified,這個是由squid讀取的原始web數據所規定的。
然后就是Date,這個是原始數據進入squid的緩沖的時間。
最后就是Expires,這個就是原始數據在squid中的緩沖過期時間。
可以很容易的得出結論,對于LM-factor算法來說,原始數據在squid中的緩沖時間為
(原始數據進入squid的緩沖的時間-原始web數據所規定的Last-Modified時間)*percent
所以,我們可以鄭重得出結論,在squid的refresh_pattern設置中,percent與Min、Max兩個值是完全沒有關系!
最后總結一下,對于squid來說,緩沖的數據在cache中的存活時間是這樣決定的:
如果有定義refresh_pattern:只要滿足以下兩個條件之一,緩沖對象過期
緩沖對象在squid的cache緩沖的時間大于refresh_pattern定義的max
緩沖對象在squid的cache緩沖的時間大于(原始數據進入squid的緩沖的時間-原始web數據所規定的Last-Modified時間)*percent
如果符合多個refresh_pattern定義,以第一條符合定義的refresh_pattern為準
如果沒有符合定義的refresh_pattern,則按squid的默認處理規則
Squid 反向代理一般只緩存可緩沖的數據(比如 html 網頁和圖片等),而一些 CGI 腳本程序或者 ASP、JSP 之類的動態程序默認不緩存。它根據從 WEB 服務器返回的 HTTP 頭標記來緩沖靜態頁面。有四個最重要 HTTP 頭標記:
Last-Modified: 告訴反向代理頁面什么時間被修改
Expires: 告訴反向代理頁面什么時間應該從緩沖區中刪除
Cache-Control: 告訴反向代理頁面是否應該被緩沖
Pragma: 用來包含實現特定的指令,最常用的是 Pragma:no-cache
例如:http://bbs.linuxtone.org/viewthread.php?tid=138
refresh_pattern 20%
假設源服務器上www.aaa.com/index.htm -----lastmodified 是 2007-04-10 02:00:00
squid上 proxy.aaa.com/index.htm index.htm進入cache的時間 2007-04-10 03:00:00
1)如果當前時間 2007-04-10 03:00:00 也就是說squid剛剛緩存上
源年齡 =3點-2點=60分鐘 對象進入cache的時間 - 頁面自身修改時間
響應年齡 =0分鐘 當前時間- 對象進入cache的時間
index.htm還可以在cache停留的時間(源年齡)*20%=12分鐘
也就是說,index.htm進入cache后,可以停留12分鐘,才被重新確認。
2)如果當前時間 2007-04-10 03:05:00 也就是說squid已緩存了5分鐘
源年齡 =3點-2點=60分鐘
響應年齡 =5分鐘
index.htm還可以在cache停留的時間(源年齡 )* 20% - 響應年齡 = 12分鐘-5分鐘=7分鐘
LM-factor=響應年齡/源年齡=5/60=8.3%<20%
一直到2007-04-10 03:12:00 LM-factor=12/60=20% 之后,cache中的頁面index.htm終于stale。
如果這時沒有index.htm的請求,index.htm會一直在緩存中,如果有index.htm請求,squid收到該請求后,由于已經過期, squid會向源服務器發一個index.htm是否有改變的請求,源服務器收到后,如果index.htm沒有更新,squid就不用更新緩存,直接把緩存的內容放回給客戶端,同時,重置對象進入cache的時間為與源服務器確認的時間,比如2007-04-10 03:13:00,如果正好在這個后重新確認了頁面。重置后,resource age變長,相應在cache中存活的時間也變長。
如果有改變則把最新的index.htm返回給squid,squid收到會更新緩存,然后把新的index.htm返回給客戶端,同時根據新頁面中的Last_Modified和取頁面的時間,重新計算resource age,進一步計算出存活時間。
實際上,一個頁面進入cache后,他的存活時間就確定了,即 (resource age) * 百分比,一直到被重新確認。
# NETWORK OPTIONS(網絡選項)
# -----------------------------------------------------------------------------
# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
#-----------------------------------------------------------------------------
# OPTIONS WHICH AFFECT THE CACHE SIZE(定義cache大小的選項)
# -----------------------------------------------------------------------------
#認證
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off
# TAG: refresh_pattern Cache更新時間設置
#<refresh_pattern>; <regex>; <最小時間>; <百分比>; <最大時間>;
acl inside1 src 192.168.1.0/24 #內部網IP段
acl inside2 src 192.168.2.0/24
acl localmac arp "/usr/local/squid/localmac" #mac地址文件
# HTTPD-ACCELERATOR OPTIONS(HTTPD加速選項)
# -----------------------------------------------------------------------------
#設定透明代理
httpd_accel_host virtual #主機名
httpd_accel_port 80 #透明代理端口
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
看論壇有人出現一個問題,就是當 Expires 設置為 60 秒以內時都不會 Cache ,但當設置成 61 秒時就能 Cache。
其實這不是個問題,在 Squid 中有這樣一行配置 minimum_expiry_time 默認值是 60 。所以只需要修改這個值.就能實現 60 秒以內 Cache 了.
注意了,這個參數不要修改的過小,這個對時間的校準很嚴格的,設置太小,你傳送過程中就花了 2 秒,你設置剛好 2 秒,過來就過期了,就樣就沒有用了。所以建議直接放在本地 cache 的前端,才設置小的時間。
這個參數主要目的也是上面寫的,防止 cache 失效,然后不斷 cache 的循環。
refresh_pattern [-i] regex min percent max [options]
* percent與Min、Max兩個值是完全沒有關系
先理解什么情況下響應過期:
1.緩沖對象在squid的cache緩沖的時間大于refresh_pattern定義的max ,該響應過期;
2.緩沖對象在squid的cache緩沖的時間大于(原始數據進入squid的緩沖的時間-原始web數據所規定的Last-Modified時間)*percent,該響應過期;
override-expire
該選項導致squid在檢查Expires頭部之前,先檢查min值。這樣,一個非零的min時間讓squid返回一個未確認的cache命中,即使該響應準備過期。
override-lastmod
改選項導致squid在檢查LM-factor百分比之前先檢查min值。
reload-into-ims
這個參數不是refresh_pattern中的參數,他是一個單獨的參數.
在flashget和迅雷之類的軟件,下載時發送http header時會包含下列信息:
Cache-Control:no-cache
Pragma:no-cache
這樣的話squid主機接受這http header以后會讓squid服務器直接連接web server取新的數據。這樣對服務器很大的壓力,
reload- into-ims參數的意思是將client請求的no-cache或reload請求轉變成If-Modified-Since,而If- Modified-Since這個參數是用于判斷文件是否被modified,這時squid和RS之間的數據傳輸僅僅只是驗證文件是否更新或更改,如果 RS返回的是文件未被更改,則直接由squid的cache文件返回給client,如果更改了,再到后端RS獲取最新的文件并被squid緩存,這樣做可以節省帶寬,增加訪問速度。
這個參數違反 HTTP 協議,但是對大部分網站來說是可以設置為 on 的,只要后端服務器對If-Modified-Since 頭的判斷正確即可。
大概意思是:只在源服務器上文件變動的情況下才實際更新cache當中的內容。
ignore-reload
1.不能通過 % squidclient -r http://www.lrrr.org/junk >/tmp/foo來強迫緩存響應更新
2.忽略瀏覽器的刷新操作(刷新操作會強迫squid調用新頁面)
3.該選項導致squid忽略請求里的任何no-cache指令,會強行緩存.除非正常從squid過期(希望頁面一進入cache就不刪除,直到被主動purge掉為止)
ignore-no-cache
該選項處理http頭部信息:
Pragma: no-cache
Cache-control: no-cache
* percent與Min、Max兩個值是完全沒有關系
先理解什么情況下響應過期:
1.緩沖對象在squid的cache緩沖的時間大于refresh_pattern定義的max ,該響應過期;
2.緩沖對象在squid的cache緩沖的時間大于(原始數據進入squid的緩沖的時間-原始web數據所規定的Last-Modified時間)*percent,該響應過期;
override-expire
該選項導致squid在檢查Expires頭部之前,先檢查min值。這樣,一個非零的min時間讓squid返回一個未確認的cache命中,即使該響應準備過期。
override-lastmod
改選項導致squid在檢查LM-factor百分比之前先檢查min值。
reload-into-ims
這個參數不是refresh_pattern中的參數,他是一個單獨的參數.
在flashget和迅雷之類的軟件,下載時發送http header時會包含下列信息:
Cache-Control:no-cache
Pragma:no-cache
這樣的話squid主機接受這http header以后會讓squid服務器直接連接web server取新的數據。這樣對服務器很大的壓力,
reload- into-ims參數的意思是將client請求的no-cache或reload請求轉變成If-Modified-Since,而If- Modified-Since這個參數是用于判斷文件是否被modified,這時squid和RS之間的數據傳輸僅僅只是驗證文件是否更新或更改,如果 RS返回的是文件未被更改,則直接由squid的cache文件返回給client,如果更改了,再到后端RS獲取最新的文件并被squid緩存,這樣做可以節省帶寬,增加訪問速度。
這個參數違反 HTTP 協議,但是對大部分網站來說是可以設置為 on 的,只要后端服務器對If-Modified-Since 頭的判斷正確即可。
大概意思是:只在源服務器上文件變動的情況下才實際更新cache當中的內容。
ignore-reload
1.不能通過 % squidclient -r http://www.lrrr.org/junk >/tmp/foo來強迫緩存響應更新
2.忽略瀏覽器的刷新操作(刷新操作會強迫squid調用新頁面)
3.該選項導致squid忽略請求里的任何no-cache指令,會強行緩存.除非正常從squid過期(希望頁面一進入cache就不刪除,直到被主動purge掉為止)
ignore-no-cache
該選項處理http頭部信息:
Pragma: no-cache
Cache-control: no-cache
ignore-no-store ignore-ridate
以上兩個選項是為了處理http頭部信息:
Cache-Control: no-store, must-ridate
Cache-Control: no-cache, must-ridate
ignore-no-cache ignore-private
處理http頭部信息:Cache-Control: no-cache, must-ridate Pragma: no-cache
這兩行是控制瀏覽器的緩存行為的,指示瀏覽器不得緩存
以上兩個參數就是為了處理動態文件不能被緩存的問題.
eg:
refresh_pattern -i \.jpg$ 180 90% 1440 reload-into-ims ignore-no-cache
refresh_pattern -i http://xxx/jobs_nv/ajax_keywords.asp 1440 50% 10080 override-expire override-lastmod reload-into-ims ignore-reload ignore-no-cache ignore-private
第一個例子是緩存jpg,第二個例子是緩存動態文件asp
ignore-reload和reload-into-ims的區別:
ignore-reload 會強行緩存,對no-cache當沒有見到,但使用 reload-into-ims,當有no-cache的請求發過來時,他會發一個http頭部回去問源服務器(上層服務器),是否有修改,如果修改就更新,如果沒有就返回給客戶.
regexp參數是大小寫敏感的正則表達式。你可以使用-i選項來使它們大小寫不敏感。squid按順序來檢查refresh_pattern行;當正則表達式之一匹配URI時,它停止搜索。
理解squid檢查不同值的順序非常重要。如下是squid的refresh_pattern算法的簡單描述:
假如響應年齡超過refresh_pattern的max值,該響應過期;
假如LM-factor少于refresh_pattern百分比值,該響應存活;
假如響應年齡少于refresh_pattern的min值,該響應存活;
其他情況下,響應過期。
在squid.conf.default里面,refresh_pattern參數下面的注釋是這樣的:
TAG: refresh_pattern
usage: refresh_pattern [-i] regex min percent max [options]
Basically a cached object is:
FRESH if expires < now, else STALE
STALE if age > max
FRESH if lm-factor < percent, else STALE
FRESH if age < min
else STALE
以上所有的時間都是以分鐘為單位計算。
· refresh_pattern指出的緩沖對象過期了,這個對象過期。
· refresh_pattern指出的緩沖對象在squid的cache緩沖的時間大于max的話,這個對象過期。
· refresh_pattern指出的緩沖對象的lm-factor大于等于percent的話,這個對象過期。
· refresh_pattern指出的緩沖對象在squid的cache緩沖的時間小于min的話,這個對象不過期。
可是,這個lm-factor到底是怎么算的?有什么具體意義? look下面的圖:
上面這張圖來自于《Squid.Definitive.Guide》第七章,對squid的LM-factor算法作出了一個很直觀的描述。
請注意這張圖的起始時間坐標:Last-Modified,這個是由squid讀取的原始web數據所規定的。
然后就是Date,這個是原始數據進入squid的緩沖的時間。
最后就是Expires,這個就是原始數據在squid中的緩沖過期時間。
可以很容易的得出結論,對于LM-factor算法來說,原始數據在squid中的緩沖時間為
(原始數據進入squid的緩沖的時間-原始web數據所規定的Last-Modified時間)*percent
所以,我們可以鄭重得出結論,在squid的refresh_pattern設置中,percent與Min、Max兩個值是完全沒有關系!
最后總結一下,對于squid來說,緩沖的數據在cache中的存活時間是這樣決定的:
如果有定義refresh_pattern:只要滿足以下兩個條件之一,緩沖對象過期
緩沖對象在squid的cache緩沖的時間大于refresh_pattern定義的max
緩沖對象在squid的cache緩沖的時間大于(原始數據進入squid的緩沖的時間-原始web數據所規定的Last-Modified時間)*percent
如果符合多個refresh_pattern定義,以第一條符合定義的refresh_pattern為準
如果沒有符合定義的refresh_pattern,則按squid的默認處理規則
Squid 反向代理一般只緩存可緩沖的數據(比如 html 網頁和圖片等),而一些 CGI 腳本程序或者 ASP、JSP 之類的動態程序默認不緩存。它根據從 WEB 服務器返回的 HTTP 頭標記來緩沖靜態頁面。有四個最重要 HTTP 頭標記:
Last-Modified: 告訴反向代理頁面什么時間被修改
Expires: 告訴反向代理頁面什么時間應該從緩沖區中刪除
Cache-Control: 告訴反向代理頁面是否應該被緩沖
Pragma: 用來包含實現特定的指令,最常用的是 Pragma:no-cache
例如:http://bbs.linuxtone.org/viewthread.php?tid=138
refresh_pattern 20%
假設源服務器上www.aaa.com/index.htm -----lastmodified 是 2007-04-10 02:00:00
squid上 proxy.aaa.com/index.htm index.htm進入cache的時間 2007-04-10 03:00:00
1)如果當前時間 2007-04-10 03:00:00 也就是說squid剛剛緩存上
源年齡 =3點-2點=60分鐘 對象進入cache的時間 - 頁面自身修改時間
響應年齡 =0分鐘 當前時間- 對象進入cache的時間
index.htm還可以在cache停留的時間(源年齡)*20%=12分鐘
也就是說,index.htm進入cache后,可以停留12分鐘,才被重新確認。
2)如果當前時間 2007-04-10 03:05:00 也就是說squid已緩存了5分鐘
源年齡 =3點-2點=60分鐘
響應年齡 =5分鐘
index.htm還可以在cache停留的時間(源年齡 )* 20% - 響應年齡 = 12分鐘-5分鐘=7分鐘
LM-factor=響應年齡/源年齡=5/60=8.3%<20%
一直到2007-04-10 03:12:00 LM-factor=12/60=20% 之后,cache中的頁面index.htm終于stale。
如果這時沒有index.htm的請求,index.htm會一直在緩存中,如果有index.htm請求,squid收到該請求后,由于已經過期, squid會向源服務器發一個index.htm是否有改變的請求,源服務器收到后,如果index.htm沒有更新,squid就不用更新緩存,直接把緩存的內容放回給客戶端,同時,重置對象進入cache的時間為與源服務器確認的時間,比如2007-04-10 03:13:00,如果正好在這個后重新確認了頁面。重置后,resource age變長,相應在cache中存活的時間也變長。
如果有改變則把最新的index.htm返回給squid,squid收到會更新緩存,然后把新的index.htm返回給客戶端,同時根據新頁面中的Last_Modified和取頁面的時間,重新計算resource age,進一步計算出存活時間。
實際上,一個頁面進入cache后,他的存活時間就確定了,即 (resource age) * 百分比,一直到被重新確認。
Squid 配置文件詳解
# NETWORK OPTIONS(網絡選項)
# -----------------------------------------------------------------------------
http_port 3128 #代理端口
icp_port 3130 #icp端口
icp_port 3130 #icp端口
# OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM
#-----------------------------------------------------------------------------
#禁止緩存
hierarchy_stoplist cgi-bin ?
hierarchy_stoplist -i ^https:\\ ?
acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi
acl denyssl urlpath_regex -i ^https:\\
hierarchy_stoplist cgi-bin ?
hierarchy_stoplist -i ^https:\\ ?
acl QUERY urlpath_regex -i cgi-bin \? \.asp \.php \.jsp \.cgi
acl denyssl urlpath_regex -i ^https:\\
no_cache deny QUERY
no_cache deny denyssl
no_cache deny denyssl
#上面幾個就是說遇到URL中有包含cgi-bin和以https:\\開頭的都不要緩存,
#asp、cgi、php等動態腳本也不要緩存,
#https://開通的不緩存是因為一般我們進行電子商務交易,
#例如銀行付款等都是采用這個的,如果把信用卡號什么緩存那不是很危險。
#asp、cgi、php等動態腳本也不要緩存,
#https://開通的不緩存是因為一般我們進行電子商務交易,
#例如銀行付款等都是采用這個的,如果把信用卡號什么緩存那不是很危險。
# OPTIONS WHICH AFFECT THE CACHE SIZE(定義cache大小的選項)
# -----------------------------------------------------------------------------
cache_mem 32 MB #額外使用內存量,可根據你的系統內存在設定,一般為實際內存的1/3
cache_swap_low 70 #最低緩存百分比
cache_swap_high 95 #最高緩存百分比,就是上面那個額外內存的使用百分比
cache_swap_high 95 #最高緩存百分比,就是上面那個額外內存的使用百分比
maximum_object_size 4096 KB #單個文件最大緩存大小,超過這個大小將不緩存
maximum_object_size_in_memory 8 KB #在內存中單個文件最大緩存大小,超過這個大小將不緩存到內存中
#有DNS正反解所得到的IP存在緩存區的大小,這樣可以加快解析速度
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024
# LOGFILE PATHNAMES AND CACHE DIRECTORIES(定義日志文件的路徑及cache的目錄)
# -----------------------------------------------------------------------------
# 各發行版自帶的Squid略有區別,一般使用各發行版自帶的設置
# <cache_dir>; <aufs|ufs>; <目錄所在>; <MBytes大小>; <dir1>; <dir2>;
# 那個 aufs 只有在編譯的時候加入 --enable-async-io 那個選項才有支持,
# 至于目錄所在地與所占用的磁盤大小則請視您的主機情況而定,
# 而后面 dir1, dir2 則是兩個次目錄的大小,通常 16 256 或 64 64 皆可,
# 一般來說,數字最好是 16 的倍數,據說性能會比較好啦!
# -----------------------------------------------------------------------------
# 各發行版自帶的Squid略有區別,一般使用各發行版自帶的設置
# <cache_dir>; <aufs|ufs>; <目錄所在>; <MBytes大小>; <dir1>; <dir2>;
# 那個 aufs 只有在編譯的時候加入 --enable-async-io 那個選項才有支持,
# 至于目錄所在地與所占用的磁盤大小則請視您的主機情況而定,
# 而后面 dir1, dir2 則是兩個次目錄的大小,通常 16 256 或 64 64 皆可,
# 一般來說,數字最好是 16 的倍數,據說性能會比較好啦!
cache_dir aufs /Cache1 100 16 256
cache_dir aufs /Cache2 100 16 256
cache_dir aufs /Cache2 100 16 256
#日志存放位置
#cache_access_log /usr/local/squid/var/logs/access.log
#cache_log /usr/local/squid/var/logs/cache.log
#cache_access_log /usr/local/squid/var/logs/access.log
#cache_log /usr/local/squid/var/logs/cache.log
# TAG: cache_store_log
#cache_store_log /usr/local/squid/var/logs/store.log
#cache_store_log /usr/local/squid/var/logs/store.log
# TAG: pid_filename
#pid_filename /usr/local/squid/var/logs/squid.pid
#pid_filename /usr/local/squid/var/logs/squid.pid
# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS(外部支持程序選項)
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
#用代理登陸匿名ftp服務選項
# 各發行版自帶的Squid略有區別,一般使用各發行版自帶的設置
# TAG: ftp_user
ftp_user Squid@ #用戶名
ftp_passive on #被動模式
# 各發行版自帶的Squid略有區別,一般使用各發行版自帶的設置
# TAG: ftp_user
ftp_user Squid@ #用戶名
ftp_passive on #被動模式
#認證
#auth_param basic children 5
#auth_param basic realm Squid proxy-caching web server
#auth_param basic credentialsttl 2 hours
#auth_param basic casesensitive off
# OPTIONS FOR TUNING THE CACHE(調整cache的選項)
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# TAG: refresh_pattern Cache更新時間設置
#<refresh_pattern>; <regex>; <最小時間>; <百分比>; <最大時間>;
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
#上面第一行如果網址開頭是 ftp 的話,那么在一天(1440分鐘)后,
#如果proxy 再次取用這個檔案時,則 cache 內的數據會被更新!
#如果proxy 再次取用這個檔案時,則 cache 內的數據會被更新!
# TIMEOUTS (超時)
# -----------------------------------------------------------------------------
#連接到其他機器的最大嘗試時間
connect_timeout 1 minute
# -----------------------------------------------------------------------------
#連接到其他機器的最大嘗試時間
connect_timeout 1 minute
#連接到上層代理的超時時間
peer_connect_timeout 30 seconds
peer_connect_timeout 30 seconds
#返回超時
request_timeout 2 minutes
request_timeout 2 minutes
#持續連接時間
persistent_request_timeout 1 minute
persistent_request_timeout 1 minute
# ACCESS CONTROLS(訪問控制)
# -----------------------------------------------------------------------------
# -----------------------------------------------------------------------------
# TAG: acl
#Examples:
#acl myexample dst_as 1241
#acl password proxy_auth REQUIRED
#acl fileupload req_mime_type -i ^multipart/form-data$
#acl javascript rep_mime_type -i ^application/x-javascript$
#
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl msn url_regex -i ^[url]http://gateway.messenger.hotmail.com[/url]
#acl myexample dst_as 1241
#acl password proxy_auth REQUIRED
#acl fileupload req_mime_type -i ^multipart/form-data$
#acl javascript rep_mime_type -i ^application/x-javascript$
#
#Recommended minimum configuration:
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
acl msn url_regex -i ^[url]http://gateway.messenger.hotmail.com[/url]
acl inside1 src 192.168.1.0/24 #內部網IP段
acl inside2 src 192.168.2.0/24
acl localmac arp "/usr/local/squid/localmac" #mac地址文件
# TAG: http_access
http_access allow inside1 #允許inside1規則通過
http_access allow inside2 #允許inside2規則通過
http_access allow localmac #允許localmac里面有登記的mac地址通過
http_access allow msn #允許訪問[url]http://gateway.messenger.hotmail.com[/url]
http_access allow inside1 #允許inside1規則通過
http_access allow inside2 #允許inside2規則通過
http_access allow localmac #允許localmac里面有登記的mac地址通過
http_access allow msn #允許訪問[url]http://gateway.messenger.hotmail.com[/url]
acl admin arp 00:40:05:13:C4:B2
http_access allow admin #允許00:40:05:13:C4:B2這個mac地址
http_access allow admin #允許00:40:05:13:C4:B2這個mac地址
#
#Recommended minimum configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost #允許manager訪問localhost
http_access deny manager #禁止manager訪問
# Deny requests to unknown ports
http_access deny !Safe_ports #禁止訪問不在Safe_ports里的端口
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports #禁止訪問非443,563端口
#
#Recommended minimum configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost #允許manager訪問localhost
http_access deny manager #禁止manager訪問
# Deny requests to unknown ports
http_access deny !Safe_ports #禁止訪問不在Safe_ports里的端口
# Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports #禁止訪問非443,563端口
#
acl banned_sites url_regex "/etc/squid/banned.list"
acl worktime time MTWHF 8:30-12:00 14:00-18:00
acl mmxfile urlpath_regex -i \.mp3$ \.avi$ \.rmvb$ \.rm$ \.wma$ \.wmv$
http_access deny worktime mmxfile #禁止在worktime時間內訪問.mp3,.avi,.rmvb,.rm,.wma文件
http_access deny worktime banned_sites #banned.list文件里的網址全部丟棄
http_access allow localhost #localhost可以訪問
acl worktime time MTWHF 8:30-12:00 14:00-18:00
acl mmxfile urlpath_regex -i \.mp3$ \.avi$ \.rmvb$ \.rm$ \.wma$ \.wmv$
http_access deny worktime mmxfile #禁止在worktime時間內訪問.mp3,.avi,.rmvb,.rm,.wma文件
http_access deny worktime banned_sites #banned.list文件里的網址全部丟棄
http_access allow localhost #localhost可以訪問
#------按照網段,限制連接數
acl loc1 src 192.168.1.0/24
acl loc1_conn maxconn 50
acl loc2 src 192.168.2.0/24
acl loc2_conn maxconn 30
acl loc1 src 192.168.1.0/24
acl loc1_conn maxconn 50
acl loc2 src 192.168.2.0/24
acl loc2_conn maxconn 30
http_access deny loc1 loc1_conn
http_access allow loc1
http_access deny loc2 src loc2_conn
http_access allow loc2
#-----------------------------
http_access allow loc1
http_access deny loc2 src loc2_conn
http_access allow loc2
#-----------------------------
http_access allow localhost #localhost可以訪問
http_access deny all #丟棄其他
http_access deny all #丟棄其他
# HTTPD-ACCELERATOR OPTIONS(HTTPD加速選項)
# -----------------------------------------------------------------------------
#設定透明代理
httpd_accel_host virtual #主機名
httpd_accel_port 80 #透明代理端口
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!