proxy.pac を書いてみた

今まであんまりチェックしていなかったのだけど、Webブラウザのプロキシ設定を自動的に行なってくれるという、proxy.pacを自宅内でも用意してみた。
詳しい書式は、下記を参照のこと。

うちの環境用に準備したのは、次の通り。

nexus01:~# more /var/www/proxy.pac
function FindProxyForURL(url,host) {
	if (isInNet(host, "172.16.0.0", "255.255.255.0") || dnsDomainIs(host, ".local.downtown.jp"))
		return "DIRECT;"
	else
	if (isInNet(host, "218.219.149.232", "255.255.255.248") || dnsDomainIs(host, ".downtown.jp"))
		return "DIRECT;"
	else
		return "PROXY proxy.local.downtown.jp:3128; DIRECT";
}

内部ネットワークと自分のところに割り当てられているグローバルIPにあるサーバについては、ダイレクトにアクセスするように書いたのだけど、もしかしたら2つある"if (isInNet(host, 〜"のところは1行でいいかもしれない。
あとは、最後に使わせたいプロキシサーバとそのポート、そのプロキシサーバが使えない状態でもアクセスできるように"DIRECT"と書いておく。こうしておくとWebブラウザ側が状況に応じて切り替えてくれるみたい。

で、このファイルを"http://172.16.0.254/proxy.pac"といった形でアクセス出来るように配置すれば準備完了。
このへんはWebサーバのログでチェックしてもいいですな。実際のログはこんな感じで出てくる。

172.16.0.101 - - [23/Feb/2012:23:35:38 +0900] "GET /proxy.pac HTTP/1.1" 200 532 "-" "Evernote/221382 CFNetwork/520.3.2 Darwin/11.3.0 (x86_64) (Macmini4%2C1)"
172.16.0.101 - - [23/Feb/2012:23:35:57 +0900] "GET /proxy.pac HTTP/1.1" 200 532 "-" "WebProcess/7534.54.12 CFNetwork/520.3.2 Darwin/11.3.0 (x86_64) (Macmini4%2C1)"
172.16.0.101 - - [23/Feb/2012:23:35:57 +0900] "GET /proxy.pac HTTP/1.1" 200 532 "-" "Safari/7534.54.12 CFNetwork/520.3.2 Darwin/11.3.0 (x86_64) (Macmini4%2C1)"
172.16.0.101 - - [23/Feb/2012:23:36:56 +0900] "GET /proxy.pac HTTP/1.1" 200 506 "-" "Safari/7534.54.12 CFNetwork/520.3.2 Darwin/11.3.0 (x86_64) (Macmini4%2C1)"
172.16.0.101 - - [23/Feb/2012:23:36:57 +0900] "GET /proxy.pac HTTP/1.1" 200 506 "-" "WebProcess/7534.54.12 CFNetwork/520.3.2 Darwin/11.3.0 (x86_64) (Macmini4%2C1)"

ソフトによっては、ネットワークにアクセスに行くたびに、proxy.pacを読み込んでいるみたい。

実運用では、proxy.pacの配置場所を、ローカルネットワークだけにアクセス許可するような設定を、Webサーバにしておく必要はあるかもしれないので、そのあたりはそれぞれの事情に合わせて、ということで。


で、クライアント側の設定だけど、OS Xの場合は、ネットワーク設定のプロキシのことろで、「自動プロキシ構成」を選択してプロキシ構成ファイルのところにproxy.pacファイルにアクセスできるURLをフルパスで入力すればOK。

プロキシを proxy.pac で設定する

トラックバック(0)

コメントする