Ubuntu Apacheサーバー(Apache 2)が起動すると、次の警告メッセージが表示されます。
[warn] NameVirtualHost *:80 has no VirtualHosts
ただし、Webサーバーは正常に動作しています。この警告が表示されるようにするには、サイトの構成で何が問題になっているのでしょうか?
問題の構成ファイル(/etc/Apache2/sites-available
にあります)は次のように読み取ります(簡潔にするために詳細は削除されています)
<VirtualHost *>
<Location /mysite>
# Configuration details here...
</Location>
# Use the following for authorization.
<LocationMatch "/mysite/login">
AuthType Basic
AuthName "My Site"
AuthUserFile /etc/sitepasswords/passwd
Require valid-user
</LocationMatch>
</VirtualHost>
私が<Location>
を使用しているという事実が問題の一部である可能性はありますか?
変化する
<VirtualHost *>
読む
<VirtualHost *:80>
または、その(NameVirtualHost *:80)がApache2 Confingファイルに2回追加されました。 (デフォルトでは、ports.confファイルに追加されます)
これでエラーが解消されます。
余談:このエラーは無視すべきではありません。 Apacheの設定、特に仮想ホストのグロブ(例:Include /etc/httpd/vhosts.d/*)が安定していない場合。つまり、ホストの読み込み順序を明示的に制御しないため、IPのデフォルトの仮想ホストが最初に読み込まれる仮想ホストになり、意図しない結果が生じる可能性があります。
この1つの例は、IPのデフォルトのvhostがnameではなく、そのIPでも利用できることです。これにより、名前ではなくサイトのIPを参照する情報がグーグルに漏洩し、顧客を混乱させる可能性があります。
上記のNameVirtualHostエラーは、Apacheが最適でない方法でロードしたことを示唆している可能性があるため、無視しないでください。
これは、NameVirtualHostディレクティブが複数の場所にあるためと考えられます。
他のディストリビューションについては知りませんが、Ubuntu/Debianでは、Apacheの設定がいくつかのファイルに分割されているため、重複がある場所(httpd.conf、Apache2.conf、ports.conf、conf.d)を確認する必要があります/ *)。
おお、そして私はより多くの情報を備えたこの素晴らしいリソースを見つけました: Common Apache Misconfigurations 。
Debian/Lennyボックスの場合:/etc/Apache2/ports.confに追加のNameVirtualHostステートメントがあります-これがこの問題の原因である可能性があります(/ etc/Apache2/sites-available/defaultにも同じステートメントがあります) 。私はそのステートメントにコメントし、エラーは消えました。
一致するVirtualHostエントリのないNameVirtualHostがあります。
これは通常、致命的ではなく、単なる情報エラーです。
これは、NameVirtualHost行にポート番号(:80
)、ただしVirtualHostセクションにはありません。
ルーンが言及しているように、DebianシステムではNameVirtualHostが多くのファイルに表示されます-ports.conf、conf.d/virtual.conf、そしておそらく独自のconfファイルintサイトで利用可能
NameVirtualHost *:80(私はconf.d/virtual.confにあります)として1つの場所に存在していることを確認してください。警告が表示されます。
前述のように、サイトごとにVirtualHost方向を指定する必要もあります。この形式は<VirtualHost *:80>
同じ問題がありますが、Apacheのデフォルトのサイトをしばらくして無効にします。次のように入力します
# a2dissite default
Apache 2を再起動しようとすると、次のメッセージが表示されます。
「[警告] NameVirtualHost *:80にはVirtualHostsがありません」
次に、Apache 2の「デフォルト」サイトを再度有効にすると、すべてが再び機能し、使用するコマンドは次のとおりです。
# a2ensite default
それはすべての人々です!