【问题标题】:Nginx choosing wrong serverNginx 选择了错误的服务器
【发布时间】:2022-11-11 04:14:00
【问题描述】:

我想用不同的服务器块处理 sub.domain.com 和 domain.com 。 所以我创建了以下配置:

server {
  listen 443 ssl;

  server_name sub.domain.com;

  location / {
    ...
  }
}

server {
  listen 443 ssl;

  server_name domain.com;

  location / {
    ...
  }
}

对 sub.domain.com 的请求由第一个服务器块正确处理。但是对 domain.com 的请求由第一个处理。
为什么?

根据我从文档中了解到的情况,对 domain.com 的请求不应与 sub.domain.com 匹配?

【问题讨论】:

  • 使用nginx -T(大写T)查看所有包含文件的整个配置。检查 server 块是否与确切的 listenserver_name 指令一起出现。例如,您是否使用www.domain.com 而不是domain.com 进行测试?名称中是否有拼写错误或缺少;

标签: nginx nginx-config


【解决方案1】:

可能不适用于所有情况,但对我来说,我使用的是 .dev 域(需要 https)。我还没有设置证书,我猜 nginx 只是使用它可以找到的第一个启用 https 的站点,即使 server_name 不匹配。

一旦我使用 certbot 启用了 https 并启用了 443 重定向,它就开始工作了。

【讨论】:

    【解决方案2】:

    我有一个类似的问题,这个问题在谷歌结果中非常高。

    就我而言,我有一个仅运行 http 的开发子域,而主域运行 https。主域上的重定向之一捕获了子域请求并将其转发到主站点。

    修复方法是在 Web 浏览器中指定 http:// 或为开发域启用 https。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-03
      • 2014-08-21
      • 2020-05-17
      • 2016-02-09
      • 1970-01-01
      • 2015-03-09
      • 2019-02-01
      • 2015-04-01
      相关资源
      最近更新 更多