【问题标题】:nginx- duplicate default server errornginx-重复默认服务器错误
【发布时间】:2015-09-07 12:57:35
【问题描述】:

在我的错误日志中我得到了

[emerg] 10619#0:/etc/nginx/sites-enabled/mysite.com:4 中 0.0.0.0:80 的重复默认服务器

在第 4 行我有:

server_name mysite.com   www.mysite.com;

有什么建议吗?

【问题讨论】:

  • 发布您的完整配置。每个server {} 都应该有自己的listen 指令。
  • 如果您在启用站点的情况下编辑某些内容并且连接意外关闭,您可能会在文本编辑器中以自动保存文件结束,因此您将以重复的几乎所有配置结束,只需将其删除文件(用于 nano file.save)

标签: nginx


【解决方案1】:

您可能在 /etc/nginx/sites-enabled 中有其他文件(例如 default 配置)需要删除。

此问题是由重复提供给文件中的一个或多个 listen 指令的 default_server 参数引起的。您可能会发现此冲突指令的内容类似于:

listen 80 default_server;

正如nginx core module documentation for listen 所说:

default_server 参数(如果存在)将导致服务器成为指定 address:port 对的默认服务器。如果所有指令都没有 default_server 参数,则具有 address:port 对的第一个服务器将是该对的默认服务器。

这意味着您的配置中必须定义另一个文件或 server 块,并为端口 80 设置了 default_server。nginx 在您的 mysite.com 文件之前首先遇到该文件,因此请尝试删除或调整该其他配置。

如果您很难找到这些指令和参数的设置位置,请尝试如下搜索:

grep -R default_server /etc/nginx

【讨论】:

  • 需要明确的是 default_server 关键字只能出现在一个配置中 - 您可以使用 listen 80; 定义多个站点
  • 谢谢,你帮了我。就我而言,我在 /etc/nginx/sites-enabled/default.save 中找到了一个副本
  • 对于@Eborbob 的评论,default_server 参数对于每个address:port 对只能出现一次。这意味着可能(并且很常见)default_server 在整个 nginx 配置中出现多次,但适用于不同的 IP/端口。
  • 您可能会发现配置文件的副本(例如,由于服务器崩溃,默认文件被复制为 /etc/nginx/sites-enabled/#default# )。您应该将其移动到其他地方以通过“nginx -t”进行测试。
【解决方案2】:

操作系统 Debian 10 + nginx。 就我而言,我将“默认”页面取消链接为:

  1. cd/etc/nginx/sites-enabled
  2. 取消默认链接
  3. 服务 nginx 重启

【讨论】:

    【解决方案3】:

    在终端执行此命令以查看侦听同一端口的冲突配置:

    grep -R default_server /etc/nginx
    

    【讨论】:

      【解决方案4】:

      如果您在 Digital Ocean 上,这意味着您需要转到 /etc/nginx/sites-enabled/ 然后使用 rm -R digitalocean 和默认值删除

      它为我修好了!

      Pic of Console on Windows 10 using Bitvise

      【讨论】:

      • 这是对我有用的简单答案。我必须去 /etc/nginx/sites-enabled/ 和 rm -R previousServerFolderName 然后做 sudo service nginx restart 使 systemctl status nginx 显示“活动(运行)”
      【解决方案5】:

      在我的情况下,来自编辑器的垃圾文件导致了问题。 我的配置如下:

      #...
      http {
       # ...
       include ../sites/*;
      }
      

      最初在../sites 目录中,我有一个default.config 文件。 但是,我错误地将重复文件保存为default.config.savedefault.config.save.1。 删除它们解决了问题。

      【讨论】:

        【解决方案6】:

        如果 davidjb 的回答没有显示多个 default_server 行,请检查多个包含指令。

        您可能不小心将默认站点(或其他站点)包含了两次。

        【讨论】:

          【解决方案7】:

          就我而言,在/etc/nginx/nginx.conf 中注释掉include 上的通配符指令有效

          #include /etc/nginx/sites-enabled/*;
          
          include /etc/nginx/sites-enabled/abcdef.com;
          

          PS:根据上面的 cmets,如果只有一种配置(默认配置或自定义配置),这可能是一种解决方案

          【讨论】:

            猜你喜欢
            • 2016-05-06
            • 2015-06-19
            • 2020-05-25
            • 2014-07-21
            • 1970-01-01
            • 2014-08-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多