【问题标题】:Why does example.com behave exactly as .example.com?为什么 example.com 的行为与 .example.com 完全一样?
【发布时间】:2021-02-20 20:43:45
【问题描述】:

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

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

设置虚拟服务器的名称,例如:

server_name example.com;

服务器名称可以包含一个星号(“*”)来代替第一个或最后一个 名称的一部分:

server_name *.example.com;

此类名称称为通配符名称。

上面提到的前两个名字可以合二为一:

server_name .example.com;

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

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

这是为什么?

【问题讨论】:

  • 每个侦听端口/网络接口的可用server 块之一始终充当默认服务器,捕获该端口/接口上的所有传入请求,无论HTTP Host 标头值如何。默认服务器可以使用listen 指令的default_server 标志显式定义,否则它将是侦听该IP/端口组合的第一个server 块。阅读this 文档页面。
  • Here 是关于该主题的更详细的答案。
  • 很好,谢谢。如果您只是将其发布为答案,我会接受。

标签: nginx virtualhost


【解决方案1】:

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

这是正确问题的答案:

https://stackoverflow.com/a/64742545/8719655

【讨论】:

    猜你喜欢
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 2015-07-24
    • 1970-01-01
    • 2019-05-18
    • 2022-01-02
    相关资源
    最近更新 更多