在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
通常很好地指出问题所在。