Nginx-重复的默认服务器错误

在我的错误日志中

[ emerg ]10619 # 0: 一个0.0.0.0:80的默认服务器副本,位于/etc/nginx/sites- 启用/mysite.com: 4

在第4行,我有:

server_name mysite.com   www.mysite.com;

有什么建议吗?

148750 次浏览

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

此问题是由于在文件中重复提供给一个或多个 listen指令的 default_server参数造成的。你可能会发现这个矛盾的指令读起来类似于:

listen 80 default_server;

正如 用于 listen的 nginx 核心模块文档指出的:

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

这意味着必须在配置中定义另一个文件或 server块,并为端口80设置 default_server。Nginx 在 mysite.com文件之前首先遇到这个问题,所以请尝试删除或调整其他配置。

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

grep -R default_server /etc/nginx

如果你使用的是 Digital Ocean,这意味着你需要进入/etc/nginx/sites- 启用/,然后使用 rm-R Digital alsea 和 default 删除

它帮我修好了!

使用 Bitvise 的 Windows10控制台图片

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

grep -R default_server /etc/nginx

操作系统 Debian 10 + nginx。 在我的例子中,我解除了“默认”页面的链接:

  1. 启用 cd/etc/nginx/site
  2. 取消链接默认值
  3. 服务重新启动

在我的案例中,来自编辑器的垃圾文件导致了这个问题。 我有一个配置如下:

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

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

如果 davidjb 的答案没有显示多个 default _ server 行,请检查多个 include 指令。

有可能您意外地包括您的默认(或另一个网站)两次。

在我的例子中,在 /etc/nginx/nginx.conf中注释掉 include上的通配符指令是有效的

#include /etc/nginx/sites-enabled/*;


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

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