PACファイル 【プロキシ自動設定ファイル】 Proxy Auto-Configuration / proxy.pac
概要
PACファイル(プロキシ自動設定ファイル)とは、Webブラウザの動作を指定する設定ファイルの一つで、経由するプロキシサーバを指定するためのもの。直接アクセスとプロキシ経由、複数のプロキシサーバを使い分けることができる。標準のファイル拡張子は「.pac」。WebプロキシはWebブラウザがWebサーバへアクセスする際にコンテンツの伝送を中継してくれるサーバで、プライベートネットワークからインターネットへのアクセスなど、サーバに直接通信できない場合にクライアントの代理(proxy)としてデータの送受信を行うためこのように呼ばれる。
一般的なブラウザのプロキシ設定では、プロキシを経由するか否か、どのプロキシサーバにアクセスするかを固定的に指定するため、すべてのWebアクセスが同じプロキシ設定で行なわれることになる。これは企業内ネットワークなどで、社内サーバ向けとインターネット向けでアクセス設定を使い分けたい場合などには不便である。
PACファイルではプログラムコードの形でルールを記述し、どのような場合にプロキシを使うか、どこへのアクセスでどのプロキシを経由するかを細かく指定することができる。これにより、社内サーバへは直接アクセス、インターネットへは社内のプロキシサーバを経由、といった指定を動的に適用することができるようになる。
PACファイルの実体はJavaScriptで記述されたスクリプトで、「function FindProxyForURL(url,host){…}」という形式で「FindProxyForURL」という関数が実装されている。この関数は「url」「host」の2つの引数を取り、urlで指定されたサイトへのアクセス時に適用するプロキシ設定を文字列として返す。hostはurlから抽出されたホスト名部分の文字列(urlが“https://www.example.jp/index.html”なら“example.jp”)である。
返り値は設定値を「;」(セミコロン)区切りで連結した文字列で、先頭から順に設定値が適用可能か調べ、利用可能なものが見つかり次第適用する。設定値は「DIRECT」で直接アクセス、「PROXY ホスト名:ポート番号」で指定したプロキシを使用、「SOCKS ホスト名:ポート番号」で指定したSOCKSサーバを使用などとなっている。
例えば、関数の中で「return “PROXY gw1.example.jp:8080;PROXY gw2.example.jp:8080;DIRECT”;」のように返り値を指定すると、gw1.example.jpの8080番ポートが接続可能であればそれを経由し、不可能であればgw2の8080を試し、それも使えない場合は直アクセスを行う。urlの内容に応じて条件分岐し、それぞれ異なる設定値をreturnすることができるため、複雑なルールを記述できる。
PACファイルはローカルに保存して読み込むようにすることも、Webサーバに置いて読み込ませるように設定することもできる。慣用的に「proxy.pac」というファイル名にすることが多いが、別にファイル名本体部分は何でもよい。サーバに置く場合はプロキシを経由せず直接取得できる場所である必要があり、WebサーバのMIME設定で「.pac」ファイルを「application/x-ns-proxy-autoconfig」とする必要がある。