apache2 で mod_proxy + 仮想ホストを使用して、redmine.domain.com や git.domain.com などのサブドメインを、一致するサービスがインストールされている特定のコンテナーにリダイレクトしています。
したがって、各サービスは異なるコンテナー (仮想マシン、Linux) にインストールされ、対応するサービスに http 要求をディスパッチする責任を負う apache を実行するサービスがあります。
仮想マシンに IP アドレスを割り当てるには、/etc/network/interfaces ファイルを次のように編集します。
auto eth0
iface eth0 inet static
address 192.168.4.6
netmask 255.255.255.0
broadcast 192.168.4.255
post-up route add 192.168.4.1 dev eth0
post-up route add default gw 192.168.4.1
post-down route del 192.168.4.1 dev eth0
post-down route del default gw 192.168.4.1
ここで、192.168.4.6 は現在必要な VM の IP アドレスで、192.168.4.1 はゲートウェイです。
ディスパッチを担当する VM では機能しますが、数分/秒後に他の VM では機能しません。
実際、これを Redmine VM に装着すると、ifconfig を実行すると、次のように動作します。
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:x:xx
inet addr:192.168.4.6 Bcast:192.168.4.255 Mask:255.255.255.0
しかし、しばらくすると (通常は数秒)、次のように戻ります。
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:88.xxx.x.91 Bcast:88.xxx.x.255 Mask:255.255.252.0
私の /etc/apache2/sites-available/default には、これがあります:
<VirtualHost *:80>
ServerAdmin admin@admin.com
ServerName domain.com
ProxyPass / http://192.168.4.7:80/
ProxyPassReverse / http://192.168.4.7:80/
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@admin.com
ServerName redmine.domain.com
ProxyPass / http://192.168.4.6:80/
ProxyPassReverse / http://192.168.4.6:8080/
</VirtualHost>