2006.02.02
NameVirtual サーバ・・・(Apache)
以前に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台以上のサーバが使えるので便利で素晴らしい。
コメント
コメントフィードを購読する
コメント投稿