Apache虚拟主机默认为FQDN

时间:2016-01-22 18:36:44

标签: apache virtualhost

我在我的Apache系统上设置了一个VirtualHost,它恰好与服务器的FQDN同名。这是FQDN:

root@mail:/etc/apache2/sites-available# hostname -f
mail.example.com

这是.conf文件的内容:

000-default.conf:
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

example.com.conf:
<VirtualHost *:80>
    ServerName mail.example.com
    DocumentRoot /home/example/public_html
</VirtualHost>

现在我希望mail.example.com与VirtualHost匹配,因此使用DocumentRoot / home / example / public_html。 它没有。

运行apache2ctl -S会产生:

*:80                   is a NameVirtualHost
     default server mail.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
     port 80 namevhost mail.example.com (/etc/apache2/sites-enabled/000-default.conf:1)
     port 80 namevhost mail.example.com (/etc/apache2/sites-enabled/abcarrental.nl.conf:1)

因此默认服务器是mail.example.com,因此DocumentRoot是/ var / www / html。

选择不同的VirtualHost名称(例如webmail.example.com)并将VirtualHostName更改为webmail.example.com可以解决问题。

我已经浏览了Apache NamedVirtualHost手册页,但我找不到解释。仅解释如果名称​​不与任何vhost匹配,则使用默认值。但是,如果FQDM等于请求的名称,则不使用默认值。

这是设计的行为吗?

1 个答案:

答案 0 :(得分:2)

是的,当您从VirtualHost中省略ServerName时,它是从系统本地主机名初始化的,或者禁止从任何本地IP地址的反向DNS查找。

遗憾的是,这个配置是由debian / ubuntu软件包创建的默认虚拟主机完成的。

事后看来 - 在全能(首次列出的)虚拟主机中设置一个完全虚拟的ServerName是可取的。