squidですべての要求を上位プロキシ経由で転送するconf
2009年3月10日
インターネットにダイレクトアクセスできない場所から、どうしてもインターネットに出る必要があったので、別の場所にsquidでプロキシサーバーを作って、そこを経由させてインターネットに出るようにしたのだが、初めてsquidを使ったので、イマイチ動作がよく分らずconfの書き方にちょっと苦労した。
画像やhtml単体は落ちてくるのに、その他のところはタイムアウトしてしまう。
ログを見ていると、hogehoge.txtやhogehoge.jpgはsquidが取りに行って渡しているのに、「?」や「/」で終わったりするURLはダイレクトアクセスさせている。
最初はMIMEタイプの問題かと思ったのだが、どうもそうではないらしい。
基本的にsquidってのは、今回のように代理サーバーや中継サーバー用途というよりは、キャッシュサーバーを想定して作られているので、特に明示的に指定せずにconfを書くと、静的コンテンツだけがsquid経由でクライアントに渡される仕様になっているようだ。
ということで、すべてのクライアント要求をsquid自身が取りに行き、かつ上位プロキシを経由する設定を書いてみる。
squidではない上位プロキシを指定し、クライアント192.168.1.0/24と192.168.2.1にのみ転送し、これらへの転送をすべてsquidが行う。(ダイレクトアクセスさせない)
acl 1net src 192.168.1.0/24
acl host1 src 192.168.2.1
http_access allow 1net
http_access allow host1
never_direct allow 1net
never_direct allow host1
http_access deny all
htcp_access deny all
#待ち受けポートは8080
http_port 8080
#上位プロキシ(proxyserver:8080)を指定する
cache_peer proxyserver parent 8080 0 proxy-only
acl host1 src 192.168.2.1
http_access allow 1net
http_access allow host1
never_direct allow 1net
never_direct allow host1
http_access deny all
htcp_access deny all
#待ち受けポートは8080
http_port 8080
#上位プロキシ(proxyserver:8080)を指定する
cache_peer proxyserver parent 8080 0 proxy-only