Apache2中的*:80和_default_:80有什么区别?


8

我试图了解以下两个术语之间的区别:

*:80
_default_:80

在Apache配置文件中。我对这里的文档不清楚,并且我在这里只能找到的唯一一个邮件列表对话也没有引起任何争议(对我来说是可以理解的)。

我有一堆这样声明的基于名称的虚拟主机:

<VirtualHost *:80>
    ServerName example.com
    ...

并且我希望有一个条目在所有这些都不匹配时触发,即当请求传入时没有虚拟主机名,或者具有未声明的虚拟主机名。我应该使用*:80还是_default_:80


在Apache你可以在一个单一的IP号码或者一个网站,或者你可以有另一种模式,你可以承载多个网站每个在同一个IP号和不同的域配置为虚拟主机和监听相同的端口80上
安德鲁·史密斯

Answers:


9

我认为这_default_用于在基于IP的虚拟主机配置中定义默认虚拟主机。您正在使用基于名称的虚拟主机,因此文档中的此语句

默认虚拟主机从不处理已发送到用于基于名称的虚拟主机的地址/端口的请求。

变得有意义。

在基于名称的虚拟主机配置中,第一个定义的虚拟主机是默认虚拟主机,如果找不到其他匹配项,它将被提供,因此您可以执行以下简单操作

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/default
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName sub.example.com
    DocumentRoot /var/www/sub.example.com
</VirtualHost>

会做您想做的事情,并提供除default.example.com和sub.example.com之外的所有内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.