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

Joh*_*nst 8 virtualhost apache-2.2

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

*:80
_default_:80
Run Code Online (Sandbox Code Playgroud)

在 Apache 配置文件中。我不清楚这里的文档,我在这里找到的唯一邮件列表对话也没有说明(对我来说是可以理解的)这件事。

我有一堆基于名称的虚拟主机,声明如下:

<VirtualHost *:80>
    ServerName example.com
    ...
Run Code Online (Sandbox Code Playgroud)

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

use*_*517 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>
Run Code Online (Sandbox Code Playgroud)

会做你想做的事,并从默认情况下提供除 example.com 和 sub.example.com 之外的所有内容。