身為 Proxy Server 管理員,您也必須負責建立與發行用戶端自動配置檔案。
自動配置檔案以 JavaScript 撰寫,這是一種精簡的物件型程序檔語言,用於開發用戶端及伺服器網際網路應用程式。瀏覽器會解譯該 JavaScript 檔案。
瀏覽器首次載入時會下載該自動配置檔案。您可以將該檔案放在瀏覽器可使用 URL 來存取的任何位置。例如,您可以將該檔案放在 Web 伺服器上。您甚至可以將該檔案放在瀏覽器可使用 file:// URL 來存取的網路檔案系統中。
代理伺服器配置檔案是以 JavaScript 撰寫。該 JavaScript 檔案定義了單個函數 (稱為 FindProxyForURL),用於確定瀏覽器應對每個 URL 使用哪個 Proxy Server (如果存在)。瀏覽器會傳送兩個參數給 JavaScript 函數:瀏覽器執行所在之系統的主機名稱,以及瀏覽器嘗試取得的 URL。JavaScript 函數會傳回一個值給瀏覽器,告知瀏覽器如何繼續。
使用自動配置檔案就可以為各種類型的 URL、各種伺服器或甚至一天的不同時段,指定不同的代理伺服器 (或完全不指定代理伺服器)。換句話說,您可以設定多部特殊用途的代理伺服器,例如一部代理伺服器處理 .com 網域、另一部處理 .edu 網域,再一部處理剩下類型的網域。透過這種方式可以分散負載,並更有效率地使用代理伺服器的磁碟,因為這樣只會在快取記憶體中儲存所有檔案的一份副本,而不是多部代理伺服器都儲存相同的文件。
自動配置檔案也支援代理伺服器容錯移轉,因此若某部代理伺服器無法使用,瀏覽器會直接切換到另一部代理伺服器。
您可以在代理伺服器上儲存一或多個自動配置檔案,並將該代理伺服器當成 Web 伺服器使用 (其唯一的文件是自動配置檔案)。此舉可以讓身為代理伺服器管理員的您,維護組織中用戶端所需的代理伺服器自動配置檔案。同時也可以透過這種方式將該檔案保存在集中位置,因此更新檔案時,只需要執行一次更新動作,所有的瀏覽器用戶端都就可以自動取得更新。
您可以將代理伺服器自動配置檔案放在 server- root/proxy-serverid/pac/ 目錄中。在瀏覽器中,輸入代理伺服器自動配置檔案的 URL,方式是在 [Proxies] 標籤中鍵入該檔案的 URL。代理伺服器 URL 的格式如下:
http://proxy.domain:port/URI
例如,URL 可能為 http://proxy.example.com。如果您確實使用了 URI,亦即緊隨在 host:port 組合之後的 URL 部分,則您可以使用範本來控制對各種自動配置檔案的存取。例如,若建立了名為 /test 的 URI,且其包含名為 /proxy.pac 的自動配置檔案,便可以建立具有資源式樣 http://proxy.mysite.com:8080/test/.* 的範本。接著,您可以使用該範本來設定該目錄專屬的存取控制。
您可以建立多個自動配置檔案,並透過不同的 URL 來存取這些檔案。下表列出一些範例 URI,以及用戶端用來存取這些 URI 的 URL。
表 17–1 範例 URI 與對應的 URL
URI (路徑) |
代理伺服器的 URL |
---|---|
/ |
http://proxy.mysite.com |
/employees |
http://proxy.mysite.com/employees |
/group1 |
http://proxy.mysite.com/group1 |
/managers |
http://proxy.mysite.com/managers |
由於反向代理伺服器的運作方式之故,所以將 .pac 檔案用在代理伺服器與伺服器上會非常困難。當代理伺服器收到檔案請求時,必須判斷該請求是要存取本地 .pac 檔案或遠端文件。
若要將代理伺服器當做反向代理伺服器 (除了維護與提供 .pac 檔案功能之外),請編輯 obj.conf 檔案,以確定 NameTrans 函數的順序是正確的。
建立標準對映,將代理伺服器當做反向代理伺服器。此動作通常會告訴代理伺服器將所有請求路由至遠端內容伺服器。您可以增加代理伺服器自動配置檔案,並將它對映到特定目錄,例如 /pac。在此情況下,想要取得 .pac 檔案的任何用戶端都必須使用如下 URL:
http://proxy.mysite.com/pac
建立此對映時,請務必確定遠端內容伺服器沒有類似的目錄。
編輯 obj.conf 檔案,以確保代理伺服器自動配置檔案的指令與函數出現在其他對映之前。此指令與函數必須在最前面,因為代理伺服器通常會先執行所有 NameTrans 函數,才處理請求。然而,透過自動配置檔案,代理伺服器會立即識別路徑並傳回 .pac 檔案。
下列範例是來自使用反向代理伺服器並維護自動配置檔案的 obj.conf 檔案。
<Object name="default"> NameTrans from="file:" fn="map" to="ftp:" NameTrans from="/pac" fn="pac-map" name="file" to="/ns-home/proxy/pac/proxy.pac" NameTrans fn="redirect" from="http://foo.*" url="http://www.acme.com" NameTrans from="/ns-icons" fn="pfx2dir" dir="/ns-home/ns-icons" name="file" NameTrans fn="reverse-map" from="http://web.acme.com" to="http://proxy.acme.com:8080" NameTrans fn="map" from="http://proxy.acme.com:8080" to="http://web.acme.com" NameTrans fn="map" from="/" to="http://web.acme.com" PathCheck fn="url-check" Service fn="deny-service" AddLog fn="flex-log" name="access" AddLog fn="urldb-record" </Object>