1つのグローバルIPで複数のホストを公開する方法(ip内部転送)
通常自宅で運用しているサーバってFLETSとか、KDDIとか、まあとにかくグローバルIP一個は1個しかもっていないと思います。 でも自宅サーバとか作る人っていろんなサイト立ててみたくなりますよね?(自分だけ?)グローバルIP一個で複数のWEBサイトを個々のホストで実現しようってのが今回の話です。
今回想定しているイメージはこんな感じです。
バーチャルホストでいいんじゃないの?って声も聞こえてきますが、一台のwebサーバに複数サイトを置くのも負荷が高いと思いますし、サーバ一台壊れたら、複数サイトが全滅するというのもかっこ悪いですし。
まず、apacheが入っていないと何もできないので、インストールします。ここでインストールするサーバがポート80番でのすべての入り口になります。
1.apacheのインストール yum install httpd 2.apacheの起動
/etc/init.d httpd start
3.自動起動をonにする
/sbin/chkconfig httpd on
さてさてここからが本題です。ここで作成したhttpサーバにコンテンツはさらさら置く気はなくあくまでもこいつをフロントにして別のhttpdサーバに内部転送をかけたいというのが今回の試みです。httpd.confを編集します。以下の設定が、httpd.confに入っているか確認します。#でコメントアウトされている場合は解除してください
vi /etc/httpd/conf/httpd.conf
LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_module modules/mod_proxy.so
次にバーチャルホストの設定をします、やっぱりバーチャルホストつかうんじゃないか!!と思われてしまいますが、 このバーチャルホストの設定がポイントで、"ProxyPass"をいう記載をすれば、別のホストにそのまま転送してくれるんです
vi /etc/httpd/conf/httpd.conf
NameVirtualHost 192.168.XXX.XXX
<VirtualHost 192.168.XXX.XXX> ServerName www.newsite.com KeepAlive On ProxyPass / http://www.newsite.com:80/ </VirtualHost>
<VirtualHost 192.168.XXX.XXX> ServerName website.ddo.jp KeepAlive On ProxyPass / http://website.ddo.jp:80/ </VirtualHost>
上記設定で、apacheを再起動
/etc/init.d/httpd restart
あ、一つ大切なことを忘れておりました、前述にて、内部転送って書いたので、このままだと、環境によっては、ルータの設定画面しかでてきません。 /etc/hostsに記載しておいてください。※内部DNSを構築している方はその必要はありません。
vi /etc/hosts
192.168.XXX.XXX www.newsite.com 192.168.XXX.XXX website.ddo.jp
以上で設定は終わりです。最後にもう一つありました。上記構築したサーバを、ルータの設定で、80番ポート開放にしておいてくださいね。