为什么 example.com 的行为与 .example.com 完全相同?

Why does example.com behave exactly as .example.com?

我不知道为什么 server_name example.com 也匹配子域(至少在没有规则的情况下),如果有特定的语法:

Nginx documentation声明你可以通过以下方式定义server_name

Sets names of a virtual server, for example:

server_name example.com;

Server names can include an asterisk (“*”) replacing the first or last part of a name:

server_name *.example.com;

Such names are called wildcard names.

The first two of the names mentioned above can be combined in one:

server_name .example.com;

但我对此进行了测试,example.com 的行为与 .example.com 预期的一样,也匹配所有子域。

这不是问题,因为我可以通过为 *.example.com 设置服务器来覆盖子域,但对我来说似乎很奇怪,如果存在 .example.com 的语法以匹配两者其他两个,应该是其他两个不匹配...

这是为什么?

如果您的子域不匹配任何规则,它们将被回调到标记为 default_server 的规则,默认情况下,该规则是文件中的第一个。在这种情况下,example.com 规则。

这是正确问题的答案: