web-dev-qa-db-ja.com

ドメインがサーバーのFQDNと同じである場合、Apacheは仮想ホストを見つけることができません

Apache内で、ServerNameHost1.example.comで仮想ホストを設定しました

/ etc/hosts内には、Host1のエントリがあります。

127.0.1.1 Host1.example.com Host1

そして/ etc/hostnameに

Host1

これは、FQDNを作成するDebian/Ubuntuの方法です。

サーバー自体と同じFQDNを持つ仮想ホストにコンテンツを提供する場合、Apacheに問題があるようです。

Host1.example.comのvhostを使用してnginxを実行する場合、Hostヘッダーを取得して正しいvhostを使用しても問題はありません。

しかし、Apacheを使用すると問題が発生し、常に000-defaultを使用します。 000-defaultを削除すると、次の仮想ホストに切り替わり、作業したいドメインの仮想ホストファイルを除くすべてを削除すると、最終的に機能します。

NameVirtualHostは*に設定されます

ログにエラーメッセージはなく、重複する仮想ホストはなく、vhost構成は完全に問題ありません。

<VirtualHost *>
        ServerAdmin webmaster@localhost
        ServerName Host1.example.com

        DirectoryIndex index.php index.htm index.html
        DocumentRoot /var/www/Host1.example.com

        <Directory />
            Options FollowSymLinks Includes -Indexes
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
</VirtualHost>

誰かアイデアはありますか?

編集:

Apache -t -D DUMP_VHOSTS出力:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:*                    is a NameVirtualHost
         default server the.server.fqdn (/etc/Apache2/sites-enabled/000-default:1)
         port * namevhost the.server.fqdn (/etc/Apache2/sites-enabled/000-default:1)
         port * namevhost Host1.example.com (/etc/Apache2/sites-enabled/Host1.example.com:1)
Syntax OK
1
Kura

まあ、これに対する本当の答えはないようです、それは彼らが彼ら自身のFQDNをどのように解決するかに基づいたDebian/Ubuntuのものだけかもしれません。

/ etc/hostsでホストとFQDNの解決をコメントアウトするだけで、問題が解決することがわかりました。

#127.0.1.1 Host1.example.com Host1

ただし、これは実際の解決策ではありません。これは必須です。そうしないと、ホスト名の解決に失敗するため、Sudoやその他のプログラムを実行しようとしたときにエラーが発生します。

私にとって最も簡単な解決策は、000に1行追加することでした-デフォルト:

ServerName localhost

これ自体も実際の解決策ではありませんが、他のホストと一致しないことを意味します。これは、Apacheが最初に検出したホストであるため、一致が見つからない場合はこのホストに解決されます。

2
Kura

Apacheが間違った仮想ホストを起動するときはいつでも、httpd -t -D DUMP_VHOSTSは通常、問題が何であるかを指摘するのにかなり優れています。

0
jgoldschrafe