荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: cycker (空), 信区: Internet
标 题: Proxy Server 的分流程式( proxy.pac)
发信站: 荔园晨风BBS站 (Fri Jul 2 22:02:50 2004), 站内信件
http://www.cses.tcc.edu.tw/~chihwu/proxy-pac.httm
Proxy Server 的分流程式( proxy.pac)
一、前言
如果你的對proxy server log 檔做流量分析,結果排行榜的前幾名都是自己學校
的網站,那網路的流量就有點浪費了;如果貴單位必須設上層的 Proxy Server ,那
影響更大了,因為資料都由上層 Proxy Server 送來,即使瀏覽的是LOCAL 網站,快
則由 local 的 proxy server 送來,慢則由上層 server 先到local 抓取,再送過
來,等於是繞了一圈。
Squid 1.X 版時,有設定 local IP 和 local domain 的功能,2.X 版也有類似的
設定,但一直試不出不抓網域內 網站的設定,所以、得靠分流程式;在一般較大的
單位中,Proxy server 不只一台,這也得靠 分流程式的設定;總之,要發揮proxy
server 的效能與有效控管,分流程式是最佳選擇。
二、環境設定
1.
分流程式是由JavaScript Function 組成,預設的副檔名是 .pac ,一般都
是用 proxy.pac 這個名字,它必需獨立,不能包含在 HTML 中,格式如下
function FindProxyForURL(url, host)
{
........
........
}
2.
proxy.pac 要放在那裡呢? 你可以把它當成網頁,放在 web server 上,讓
瀏覽器讀取。 例如我們把設定檔存成 proxy.pac,然後放在一台執行 Apache 的 W
EB SERVER (www.cses.tcc.edu.tw) 的首頁目錄,那麼我們在瀏覽器的設定就是:
http://www.cses.tcc.edu.tw/proxy.pac
也許你會產生疑問,proxy.pac 和 proxy server 不用在同一台電腦上嗎?
那誰又規定跑 squid 的 proxy server 也要執行 apache 。 ^_^
那些 web server 支援呢? Netscape 、Apache、CERN、NCSA都可以,以Ap
ache 為例,請檢查 httpd.conf 中是否有以下的設定,如果沒有就自己加上去吧!
Addtype application/x-ns-proxy-autoconfig .pac
三、範例說明
一個一個function 來說明太麻煩了,就直接用例子來說明好了。
範例一:基本簡單型
function FindProxyForURL(url, host)
{
if (isPlainHostName(host) ||
dnsDomainIs(host, ".cses.tcc.edu.tw"))
return "DIRECT";
else
return "PROXY proxy.cses.tcc.edu.tw:3128; DIRECT";
}
說明:以我學校為例,在Browser 的 URL 欄位打 www 就會連到 www.cses.tcc.
edu.tw ,第一個 isPlainHostName(host) 就是處理這個部份,第二個部份 dnsDo
mainIs(host, ".cses.tcc.edu.tw") 就是處理 linux.cses.tcc.edu.tw 這種網址
,這些網域都是 local 的網站,所以回應 DIRECT ,直接去抓就可以了。
如果不符以上情形,那就是透過 proxy.cses.tcc.edu.tw:3128 去抓資料,後面加
上 DIRECT 是怕 PROXY 當了,也可以直接抓取。
註:也許會覺得奇怪,PROXY 當了,就讀不到這個proxy.pac 了,那設定有用嗎?
沒有人規定proxy.pac 要放在 proxy server 上,不同的 server 是可以的,只
要 web server 支援。
範例二:多了 IP 的判斷
function FindProxyForURL(url, host)
{
if (isPlainHostName(host) ||
dnsDomainIs(host, ".cses.tcc.edu.tw") ||
isInNet(host, "163.17.208.0", "255.255.255.0"))
return "DIRECT";
else
return "PROXY proxy.cses.tcc.edu.tw:3128; DIRECT";
}
說明:這一個例子只是比上例多一個檢查 IP 的動作,只要是連往 163.17.208.x
/24 也都直接存取。
範例三:LOCAL 、特殊網站、其他三種情形
function FindProxyForURL(url, host)
{
if (isPlainHostName(host) ||
dnsDomainIs(host, ".cses.tcc.edu.tw") ||
isInNet(host, "163.17.208.0", "255.255.255.0"))
return "DIRECT";
if (dnsDomainIs(host, ".edu.tw"))
return "PROXY cache2.nchu.edu.tw:3128;" +
"PROXY cache1.nchu.edu.tw:3128";
else
return "PROXY proxy.cses.tcc.edu.tw:3128";
}
說明:因為 CODERED 的關係,中興大學對 80 PORT 的流量做管制,必需經過 pr
oxy server ,所以,所有的教育網站都經過 proxy server ,興大提供 cache1 ca
che2 兩台 server ,是 edu.tw 的網站都要透過特定的 巨server , 要注意的是兩
台 PROXy SERVER 的寫法。
我的設定:
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.36.220]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店