荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: 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软件 网络书店