こんにちは。D.Hです。
今、DDNSのサブドメインを利用してサーバーを公開していますが、
先日、知人用の独自ドメインを取得し、私のサーバーで運用することになりました。
そこで、独自ドメインをバーチャルドメイン(ホスト)で運用しようと、
設定を行い、テストを行っています。
<VirtualHost>ディレクテブを設定して外部から接続すると、独自ドメインでアクセスできコンテンツも表示されるのですが、
DDNSのサブドメインでアクセスすると、アクセスできるが独自ドメインのコンテンツが表示されます。
結論的に、バーチャルホストを設定する場合、固定のIPで外部に自前のDNSサーバーを立てないとだめなのでしょうか?
今、利用しているDDNSは独自ドメインが使用でき、独自ドメイン用にもう1つ登録しています。
レジストラーにはDDNSのDNSサーバーを設定しています。
これは無意味なのでしょうか?
いくつIDを取得しようが同じ動的IPなわけだし、バーチャルホストの名前解決はDDNSでは無理で、
自前のDNSサーバーでないと無理ということなのでしょうか?
私自身分かっているようで分かっていなく、分かりづらい文章ですがよろしくお願いします。
こんばんは。
下記ページをよく読まれて、整理すれば理由はわかると思います。
http://httpd.apache.org/docs-2.1/ja/vhosts/name-based.html
> <VirtualHost>ディレクテブを設定して外部から接続すると、独自ドメインでアクセスできコンテンツも表示されるのですが、
> DDNSのサブドメインでアクセスすると、アクセスできるが独自ドメインのコンテンツが表示されます。
>
> 結論的に、バーチャルホストを設定する場合、固定のIPで外部に自前のDNSサーバーを立てないとだめなのでしょうか?
まず、IPは固定であろうが動的であろうが1個しかない場合、独自ドメインであれ、DDNSのサブドメインであれ、そのアドレスに変換されるので、Apacheからみるとどちらのドメインでアクセスされたかはドメイン名でしか判断できません。 Apacheは、ServerName か ServerAlias に要求されたホスト名があるか探します。 見つかればそのサーバ用の設定を使います。マッチするバーチャルホスト が見つからなければ、マッチした IP アドレスの リストの最初にあるバーチャルホスト が使われます。
つまり、ミスマッチすると最初に書かれたヴァーチャルホストに行ってしまうので、
特に関係ないサイトを名前ベースで公開する場合は、ワイルドカードを使って、絶対にミスマッチしないようにしないと駄目です。
例えば、www.example.comとしか書かないと、実は、mail.example.comがdnsに登録されていると、こちらでアクセスするとミスマッチして先頭のホストに行ってしまいます。
*.example.comとしておけば、他人様のホストには行きません。
>
> 下記ページをよく読まれて、整理すれば理由はわかると思います。
>
> http://httpd.apache.org/docs-2.1/ja/vhosts/name-based.html
>
割り込みの質問ですが:
バーチャルホストの関して、以下のような設定:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.koala.com
DocumentRoot /usr/local/apache/koala
・・・・
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.usagi.com
DocumentRoot /usr/local/apache/usagi
・・・・
とします。このとき、ssl.confにも同じように(port:443)設定
します。このとき、SSLが機能しますか。
もし、IP一個で、https://www.koala.com/ https://www.usagi.com/
が使えるようにしたいなら、どう設定すればよいのでしょうか。
> >
> > 下記ページをよく読まれて、整理すれば理由はわかると思います。
> >
> > http://httpd.apache.org/docs-2.1/ja/vhosts/name-based.html
> >
>
> 割り込みの質問ですが:
>
> バーチャルホストの関して、以下のような設定:
> NameVirtualHost *:80
> <VirtualHost *:80>
> ServerName www.koala.com
> DocumentRoot /usr/local/apache/koala
> ・・・・
> NameVirtualHost *:80
> <VirtualHost *:80>
> ServerName www.usagi.com
> DocumentRoot /usr/local/apache/usagi
> ・・・・
> とします。このとき、ssl.confにも同じように(port:443)設定
> します。このとき、SSLが機能しますか。
> もし、IP一個で、https://www.koala.com/ https://www.usagi.com/
> が使えるようにしたいなら、どう設定すればよいのでしょうか。
過去ログP0003のNo.1692からのスレを参考にしてください。
使えないことはありませんが、httpd.confで一番最初に書いたホスト以外にアクセスすると、
証明書をインストールしても毎回サーバ証明書のエラーがでます。
こんばんは。
ご返事がおそくなってすみません。
>
> 下記ページをよく読まれて、整理すれば理由はわかると思います。
>
> http://httpd.apache.org/docs-2.1/ja/vhosts/name-based.html
これを本に、設定したらうまくいきました。
どうもありがとうございました。
> まず、IPは固定であろうが動的であろうが1個しかない場合、独自ドメインであれ、DDNSのサブドメインであれ、そのアドレスに変換されるので、Apacheからみるとどちらのドメインでアクセスされたかはドメイン名でしか判断できません。 Apacheは、ServerName か ServerAlias に要求されたホスト名があるか探します。 見つかればそのサーバ用の設定を使います。マッチするバーチャルホスト が見つからなければ、マッチした IP アドレスの リストの最初にあるバーチャルホスト が使われます。
最初、私は、主となるドメイン(私の場合DDNSのサブドメイン)をServerNameに記述し、
その他の別のドメインはバーチャルホストに記述すればいいと思っていました。
でも、そうではなく、<VirtualHost>にもDDNSのサブドメインを追加する必要?があり、
設定したらうまくいきました。
結果としてうまくいきましたが、理屈的なことは完璧に理解しきれて
いないのでまだまだ勉強が必要です。
とりあえず、今はまだ本番運用まで時間があるので、勉強とテストを行っていきます。
バーチャルも、バーチャル+SSLもうまく行きました。
どうもありがとうございました。
ただし、一つの問題は、
https://(Virtualのみのドメイン名)にアクセスすると、
https://(Virtual+SSLのドメイン名)に行ってしまいます。
できれば、
https://(Virtualのみのドメイン名)にアクセスすると、何かのエラー画面でも、
表示してくれれば。あるいは、http://(Virtualのみのドメイン名)に富んでくれれば、
ありがたいですね。
何かの解決法はあるでしょうか。
> バーチャルも、バーチャル+SSLもうまく行きました。
> どうもありがとうございました。
> ただし、一つの問題は、
> https://(Virtualのみのドメイン名)にアクセスすると、
> https://(Virtual+SSLのドメイン名)に行ってしまいます。
> できれば、
> https://(Virtualのみのドメイン名)にアクセスすると、何かのエラー画面でも、
> 表示してくれれば。あるいは、http://(Virtualのみのドメイン名)に富んでくれれば、
> ありがたいですね。
> 何かの解決法はあるでしょうか。
アイデアだけですが、rewriteが使えないですかね。https://(Virtualのみのドメイン名)
だったら、http://(Virtualのみのドメイン名)にrewiteする方法です。
Tipsにあるのと似た方法ですが、HTTP_HOSTをみてアクセスポートをチェックすれば
できるような気がします。