« | Home | »

2006.02.02

NameVirtual サーバ

以前に1つのIPで2台のサーバを動かす方法を書いた。
一般的には、IPが1つもしくは2つで同一サーバ上で2つのドメインを扱う例は多いが、ここでは1つのサーバで物理的に2台のサーバへのアクセス方法についての試みの記述である。
ところが、サーバを新しく立ち上げ直したら、mod_proxyのmoduleが無く立ち上げられない事態に遭遇した。また、VirtualHost Directiveの書き方も追加修正が必要であることが分かった。
以下に方法を記すことにした。
当然あると思っていたmod_proxy.soが/usr/local/libexec/apache2に無く、既にstatic linkされているのかと思ったが、それも無い。
しかたが無いのでapache2をソースからコンパイルしてmoduleを得ることにした。
まず、ソースのダウンロードであるがダウンロードサイトのリストを見て適当なところから、httpd-2.0.55.tar.gz をダウンロードする。
次に展開してコンパイルするが、このときconfigureでproxyをsharedで指定してからコンパイルする。

# tar xvzf httpd-2.0.55.tar.gz
# cd httpd-2.0.55
# ./configure --enable-rewrite --enable-proxy=shared
# make

これで、modules/proxy/.libsの中にproxy関係のmoduleが
mod_proxy.so
mod_proxy_ftp.so
mod_proxy_connect.so
mod_proxy_http.so
の4つが出来るで、これを/usr/local/libexec/apache2内にコピーする。

# cd modules/proxy/.libs
# cp *.so /usr/local/libexec/apache2

これで、proxy関係のモジュールが得られたので、httpd.confを編集する。
まず、以下の2行の行頭の#を取り、proxy moduleをロードするようにする。

LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so

さらに、httpd.confの最後に以下を追加。

NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin hogehoge@uls.fam.cx
DocumentRoot /web/data
ServerName uls.flets.cds.ne.jp
ErrorLog /var/log/error_log
ProxyPass  /  http://192.168.1.6/
ProxyPassReverse  /  http://192.168.1.6/
</VirtualHost>

これで、apacheを再起動したら、私が使っている本来のドメイン名のuls.fam.cxでメインのサーバにアクセス出来、uls.flets.cds.ne.jpでアクセスすれば192.168.1.6のサーバにアクセス出来る。 出来るはずだった。
しかし、外部のproxy経由でアクセスしてみると、全て192.168.1.6に行ってしまう。
しばし、考えたが結局メインのサーバも以下のように追加で指定して解決した。

<VirtualHost *:80>
ServerAdmin hogehoge@uls.fam.cx
DocumentRoot /web/data
ServerName uls.fam.cx
ErrorLog /var/log/error_log
</VirtualHost>

Web関係だけであるが、簡単な設定でIPアドレスが1つでも2台以上のサーバが使えるので便利で素晴らしい。

コメント

コメントはありません

コメントフィードを購読する

コメント投稿





コメント本文に次の(X)HTMLタグを使えます:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)