バーチャルサーバを立ち上げようとしているのですがうまくいきません。
アドバイスをお願いいたします。
先日、「Linuxで作る自宅サーバ」という本を参考に、Red Hat Linux 9
でWebサーバを立ち上げました。このサーバに、ネームベースのバーチ
ャルホストの設定をしたのですが、どちらもデフォルトのページを表示
してしまいます。
Apache 2.0.40
BIND 9.2.1
です。
httpd -t -D DUMP_VHOSTS で確認すると、
VirtualHost configuration:
192.168.0.2:* is a NameVirtualHost
default server oia.dip.jp(/etc/httpd/conf/httpd.conf:1043)
port * namevhost oia.dip.jp (/etc/httpd/conf/httpd.conf:1043)
port * namevhost willful.dip.jp (/etc/httpd/conf/httpd.conf:1051)
wildcard NameVirtualHosts and _default_ servers:
_default_:443 new.host.name (/etc/httpd/conf.d/ssl.conf:90)
Syntax OK
httpd -t で確認すると、
Syntax OK
となりました。
httpd.confには、
ServerName willful.dip.jp
と
<VirtualHost willful.dip.jp>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /var/www/html
ServerName willful.dip.jp
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost oia.dip.jp>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /home/koryu/public_html
ServerName oia.dip.jp
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
を追加しました。
namedフォルダには、willful.dip.jp.hosts と oia.dip.jp.hosts
があります。
willful.dip.jp.hostsは、
$ttl 38400
willful.dip.jp. IN SOA localhost.localdomain. syo.kobe-catv.ne.jp (
1102731839
10800
3600
604800
38400 )
willful.dip.jp. IN NS localhost.localdomain.
willful.dip.jp. IN A 192.168.0.2
pc06.willful.dip.jp. IN A 192.168.0.6
oia.dip.jp.hostsは、
$ttl 38400
oia.dip.jp. IN SOA localhost.localdomain. root.oia.dip.jp (
1112687954
10800
3600
604800
38400 )
oia.dip.jp. IN NS localhost.localdomain.
oia.dip.jp. IN A 192.168.0.2
となっています。
それぞれの、URLは、iesarver.NETさんで取得し、バーチャルサーバの
設定をする前は、どちらのURLでも同じページを表示していました。
(設定後も、表面上の動きは同じです)
アドバイス、よろしくお願いいたします。
1つ気になる点
ieserver で2つ以上ドメイン取るとおこられるかも
#NameVirtualHost *:80
の # は取りましたか?
<VirtualHost willful.dip.jp>
は今は<VirtualHost *:80> のままでかまいません。
祇園さんが言われていることは当然ですが、名前ベースのバーチャルホストがうまくいくかどうかは、http://ホスト名/ とアクセスするホスト名ServerNameディレクティブで指定しているサーバ名が完全に一致しているか否かがポイントです。
完全に一致しなければ、先頭のバーチャルホストにアクセスに行きます。
詳しくは、下記参照ください。Windows用に書いてありますがLinuxでも何も変わりません。
http://server.aconus.com/~oyaji/www/apache_win_virtual.htm
どのようにアクセスしているかわかりませんが、BINDでチャント名前解決できていればアクセスできない理由はありません。恐らく、http://willful.dip.jp/とかhttp://oia.dip.jp/とかでアクセスしていないのでは? 結果として、oia.dip.jpにアクセスしたくても先頭のwillful.dip.jpのコンテンツが見えているということだと想像されます。
IPベースはIPアドレスが違うのでこういうことは発生しませんが、名前ベースの場合は、http://ホスト名/ で指定するホスト名以外で振り分けるキーがありませんから、設定されているホスト名でアクセスできないと駄目です。つまり、どんな環境(インターネットしかり、家庭内しかり。)でもこのホスト名の名前解決は必須です。
祇園さん・おやじさん、ありがとうございます。
まず、祇園さんの指摘の
#NameVirtualHost *:80
の#は、はずしています。
それから、アドレスの指定で、*を指定すると、サポートされていないと言ったような意味のエラーが発生します。(httpd -t で確認)
おやじさんの指摘のアクセス時のホスト名が違うのでは、とのことですが、おやじさんのレスのURLからでも同じ結果になりますし、入力間違いはないと思います。
時間がなかったので、詳しく確認していないのですが、とりあえず報告とお礼まで!
改めて、詳しく確認致します。
httpd -t はとりあえず無視して、
<VirtualHost oia.dip.jp>
<VirtualHost willful.dip.jp>
を
<VirtualHost oia.dip.jp:80>
<VirtualHost willful.dip.jp:80>
や
<VirtualHost *:80>
<VirtualHost *:80>
さらに
<VirtualHost 192.168.0.2:80>
<VirtualHost 192.168.0.2:80>
でも試してみてください
アドバイスありがとうございます。
いろいろ、設定をさわっているうちにhttpdが、エラーで起動しなくなってしまいました。設定は、元に戻したつもりなのですがだめです。
現在は、予備のWEBサーバで動かしているのですが、バーチャルホストのことは、メインのWEBサーバが修復を終わるまで保留することにします。
申し訳ありません。