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

nginx- duplicate default server error

在我的错误日志中我得到

[emerg] 10619#0: a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/mysite.com:4

在第 4 行我有:

server_name mysite.com   www.mysite.com;

有什么建议吗?

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

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

listen 80 default_server;

nginx core module documentation for listen 所述:

The default_server parameter, if present, will cause the server to become the default server for the specified address:port pair. If none of the directives have the default_server parameter then the first server with the address:port pair will be the default server for this pair.

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

如果您正在努力寻找这些指令和参数的设置位置,请尝试如下搜索:

grep -R default_server /etc/nginx

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

删除

它帮我修好了!

Pic of Console on Windows 10 using Bitvise

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

grep -R default_server /etc/nginx

OS Debian 10 + nginx。 就我而言,我将 "default" 页面取消链接为:

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

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

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

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

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

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

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

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

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

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