在我的错误日志中,我得到了
在第4行我有:[emerg] 10619#0:/etc/nginx/sites-enabled/mysite.com:4中的0.0.0.0:80的重复默认服务器
server_name mysite.com www.mysite.com;
有什么建议吗?
答案 0 :(得分:139)
您可能需要删除位于default
的其他文件(例如/etc/nginx/sites-enabled
配置)。
此问题是由重复提供给文件中一个或多个default_server
指令的listen
参数引起的。您可能会发现这个冲突的指令读取类似于:
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
答案 1 :(得分:4)
OS Debian 10 + nginx。 就我而言,我将“默认”页面取消链接为:
答案 2 :(得分:1)
如果您在Digital Ocean上,这意味着您需要转到/ etc / nginx / sites-enabled /,然后使用rm -R digitalocean和默认值删除
它为我修复了它!
答案 3 :(得分:1)
就我而言,来自编辑器的垃圾文件引起了问题。 我有一个如下配置:
#...
http {
# ...
include ../sites/*;
}
最初,在../sites
目录中有一个default.config
文件。
但是,由于错误,我将重复文件另存为default.config.save
和default.config.save.1
。
删除它们可以解决问题。
答案 4 :(得分:0)
在终端上执行此操作,以查看侦听同一端口的冲突配置:
grep -R default_server /etc/nginx
答案 5 :(得分:0)
如果 davidjb 的回答没有显示多个 default_server 行,请检查多个包含指令。
您可能不小心将默认网站(或其他网站)包含了两次。
答案 6 :(得分:0)
就我而言,在 include
中注释掉 /etc/nginx/nginx.conf
上的通配符指令有效
#include /etc/nginx/sites-enabled/*;
include /etc/nginx/sites-enabled/abcdef.com;
PS:根据上面的评论,如果只有一种配置(默认配置或自定义配置),这可能是一种解决方案