如果域与服务器FQDN相同,则Apache无法find虚拟主机

在Apache中,我有一个使用ServerName host1.example.com设置的虚拟主机

在/ etc / hosts中有一个host1的入口

127.0.1.1 host1.example.com host1

并在/ etc /主机名

主机1

这是创buildFQDN的Debian / Ubuntu方式。

当为与服务器本身具有相同FQDN的虚拟主机提供内容时,Apache似乎有问题。

使用host1.example.com的虚拟主机运行nginx时,获取主机头并使用正确的虚拟主机没有任何问题。

但是当使用Apache时有问题,它总是使用000-default。 删除000-default使其切换到下一个虚拟主机,并删除除了我想要工作的域的虚拟主机文件,最终使它工作。

NameVirtualHost设置为*

日志中没有错误消息,没有重叠的虚拟主机,虚拟主机configuration是完全正确的。

<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解决scheme就解决了这个问题。

 #127.0.1.1 host1.example.com host1 

然而,这不是一个真正的解决scheme,这是必需的,否则,当您尝试运行sudo和其他程序时,您会遇到错误,因为它无法parsing主机名。

对我来说最简单的解决scheme是将一行添加到000-default:

 ServerName localhost 

这不是一个真正的解决scheme,但是这意味着它不会匹配其他主机,因为它是第一个主机,如果没有find匹配,Apache会发现它将parsing到这个主机。

每当Apache引起错误的虚拟主机时, httpd -t -D DUMP_VHOSTS通常很好地指出问题所在。