プロキシサーバー上に 1 つ以上の自動設定ファイルを保存し、そのプロキシサーバーを、自動設定ファイルを唯一のドキュメントとする Web サーバーとして機能させることができます。これによって、プロキシの管理者は、組織内のクライアントが必要とするプロキシ自動設定ファイルを保持することができます。また、ファイルを中央で保持できるので、ファイルを更新する必要がある場合は、中央のファイルを一度更新するだけで、すべてのブラウザクライアントにより自動的に更新が取得されます。
プロキシ自動設定ファイルは、server- root/proxy-serverid/pac/ ディレクトリで保持されます。ブラウザでは、プロキシ自動設定ファイルへの URL を「Proxies」タブに入力します。プロキシの URL は次の書式になります。
http://proxy.domain:port/URI
たとえば、URL は http://proxy.example.com となります。URI (URL の後に続くhost:port の組 み合わせ) を使用すれば、テンプレートを使用してさまざまな自動設定ファイルへのアクセスを制御できます。たとえば、/proxy.pac という自動設定ファイルを格納する /test という URI を作成すると、リソースパターン http://proxy.mysite.com:8080/test/.* を使用したテンプレートを作成できます。次に、このテンプレートを使用して、そのディレクトリ固有のアクセス制御を設定することができます。
複数の自動設定ファイルを作成し、それぞれが異なる URL 経由でアクセスするように設定できます。次の表は、クライアントがアクセスするために使用する 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>