web-dev-qa-db-ja.com

Apache名前ベースの仮想ホストでのServerNameワイルドカード?

私たちのLANでは、Apacheの名前ベースの仮想ホスティングに使用することを目的として、DNSサーバーにいくつかの「偽の」TLDを設定しました。これをUbuntu 10.04 LAMPサーバー上のマス仮想ホスティング(つまり、VirtualDocumentRoot)と組み合わせたいのですが。

しかし、正しいvhostを選択することはできません!

Apache設定の概要は次のとおりです。

NameVirtualHost 10.10.0.205

<VirtualHost 10.10.0.205>
   ServerName *.test
   VirtualDocumentRoot /var/www/%-3.0.%-2/test/%1/
   CustomLog /var/log/Apache2/access.log vhost_combined
</VirtualHost>

<VirtualHost 10.10.0.205>
   ServerName *.dev
   VirtualDocumentRoot /var/www/%-3.0.%-2/dev/%1/
   CustomLog /var/log/Apache2/access.log vhost_combined
</VirtualHost>

www.domain.com.devのようなホスト名は10.10.0.205に正しく解決されますが、より密接に一致する下部のvhostではなく、常に上部のvhostを選択します。

私は、Apacheが特定のIPの上位の仮想ホストにデフォルト設定する前に、最初にServerNameを照合しようとするという印象を受けました。何が悪いのですか?または、これは不可能であり、TLDごとに別のIPを使用する必要がありますか?

apachectl -S出力(トリミング):

10.10.0.205:*          is a NameVirtualHost
    default server *.test
    port * namevhost *.test
    port * namevhost *.dev
16
Martijn Heemels

ServerAliasだけではなく、ServerNameを使用します。

ServerName somename.dev

ServerAlias *.dev

41
Mo.

これが役立つ場合は、少しMoの答えを完了するだけです。

ServerAliasのワイルドカードは、次のような部分的なドメイン名でも機能します。

ServerName somename.dev

ServerAlias *-mysite.dev

最近私の命を救った^^(admin-somename.devbo-somename.devapi-somename.dev...などのサブアプリごとにサブドメインがあるメインサイト)

4
Sÿl