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
まあ、これに対する本当の答えはないようです、それは彼らが彼ら自身のFQDNをどのように解決するかに基づいたDebian/Ubuntuのものだけかもしれません。
/ etc/hostsでホストとFQDNの解決をコメントアウトするだけで、問題が解決することがわかりました。
#127.0.1.1 Host1.example.com Host1
ただし、これは実際の解決策ではありません。これは必須です。そうしないと、ホスト名の解決に失敗するため、Sudoやその他のプログラムを実行しようとしたときにエラーが発生します。
私にとって最も簡単な解決策は、000に1行追加することでした-デフォルト:
ServerName localhost
これ自体も実際の解決策ではありませんが、他のホストと一致しないことを意味します。これは、Apacheが最初に検出したホストであるため、一致が見つからない場合はこのホストに解決されます。
Apacheが間違った仮想ホストを起動するときはいつでも、httpd -t -D DUMP_VHOSTS
は通常、問題が何であるかを指摘するのにかなり優れています。