1つのSquidで複数のマシンにリクエスト振り分け
Linux Users MLで似たような話題があったので。
構成としては、
- www1.example.comとwww2.example.comという2台のマシンがある
- Squidサーバが1台ある
- www1.example.comとwww2.example.comは、Squid経由でアクセスさせたい
というものです。
肝は
- 外向けDNSには、www1.example.comとwww2.example.comのアドレスをSquidサーバのアドレスにする
- Squidサーバが解決するwww1.example.comとwww2.example.comのアドレスは、リアルなアドレスにする
- httpd_accel_host の指定を virtual にする
httpd_accel_host_headerhttpd_accel_uses_host_header を on にする
という4つですね。このようにすることで、動作としては
みたいな感じになります。但し、注意しなきゃいけないのは
- Squidサーバから外部へのコネクションは厳しく制限しないと、Anonymous Proxyみたいな感じに使われかねない
という点です。Hostヘッダの内容から実際の接続先を決めるので、Hostヘッダにwww1.example.comとwww2.example.com以外のホストを入れられてしまうと、Squidサーバから外へアクセスできる状態になっていたら、即死です(汗)。
MLにて、名前解決をしないようにすれば、というのもありましたが、HostヘッダにIPアドレスを突っ込まれてしまったら結局同じことなので、サーバからのアクセス制限は必須ってことすね。