wakatonoの戯れメモ

はてなダイアリーから引っ越してきました。

IPアドレス1個で複数のドメインを複数のサーバで

実は以前、似たようなことを検討したことがありました。
で、結論は「可能だけど設定は要注意」というものだったんですが、なんか似たようなことをやりたいという人がいたので回答してみるも、同一IDによる回答は2つまでということなので、自分のところで(w*1

当該エントリとSquid2の設定(日本語)を見てもらえば、何をしたいかというのはわかると思うんですが、
Squidの設定は

  • httpd_accel_host virtual
  • httpd_accel_uses_host_header on


という2つだけが有効になってればOKです。
意味はそれぞれ

  • Squidは(いわゆる)リバースプロキシとして動作する。この際に、IPアドレスベースのVirtualHostをサポートする。
  • ネームベースのVirtualHostを使う(IPアドレスが同じ)場合、Hostヘッダを見てリクエストを振り分ける

というものです(過去の私の日記にあるのはちょっと間違いでした(修正))。
このときに、Squidが動くOS(Linuxと仮定します)で必要な設定もあって、

  • iptablesなどで、当該マシンから外に対するコネクションを制限する(httpd_accel_uses_host_headerを有効にすることでHostヘッダで指定されたマシンに対する(不正な)リクエストを抑止する。
  • アドレス解決の順序を考える

プライベートアドレスを(当該ドメインについて)なんかするはずなんで、当該ドメインのサービスを提供しているサーバについて付与されるプライベートアドレスを(当該ホストのプログラムが名前解決要求を出した際に)返してやる必要がある。
一番手っ取り早いのは、名前解決の順序をhostsファイル→DNSという順序にすることだけど、このあたりはちょっと自身ないなぁ。

というあたりは考えどころ。

*1:あとでトラックバックを送ってみる