编辑:首先阅读此内容:
除了接受的答案外,当nginx在没有systemd的情况下启动时会出现这些错误。杀死nginx:ps -ax | grep nginx
→找到nginx主进程id→kill ###
;使用systemd运行nginx:systemctl start nginx
。
如果没有使用systemctl来启动nginx,则似乎无法使用systemctl stop nginx停止nginx(至少在我的服务器上不行);因此,在尝试第二次启动nginx时,systemctl restart nginx会出现此错误。
关于我的设置:
我使用Debian 10、Buster和一台在线服务器。我已经测试过两个域名,并且它们使用这些配置文件自己广播,但是当两个配置文件都活动时,它们并不广播。
我的目标:
如何在单个IP地址上使用nginx设置两个网站?
错误信息:
nginx:[emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/example.com:22
第2行。
nginx:[emerg] a duplicate default server for 0.0.0.0:443 in /etc/nginx/sites-enabled/example.com:22
第2行。default_server
在端口443上使用。
nginx:[emerg] duplicate listen options for [::]:443 in /etc/nginx/sites-enabled/example.com:23
第3行。在一个文件中尝试了default_server
作为http2
,并使用端口443。
nginx:[emerg] duplicate listen options for [::]:80 in /etc/nginx/sites-enabled/example.com:23
第3行。在一个文件中尝试了default_server
作为http2
。
nginx:[emerg]在/etc/nginx/sites-enabled/example.com:23中无效的参数“example.com”
第3行:default_server
作为example.com
尝试。
配置文件(已剥离注释):
有两个这些文件(见下面的代码)。我的配置文件与下面的代码块中看到的完全相同,唯一的区别是:在两个文件中,example.com
是我拥有的真实独特的域名。
我的配置文件存放在/etc/nginx/sites-available
,它们是符号链接到/etc/nginx/sites-enabled
。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/example.com; #example.com is different in both files.
index index.html index.htm index.nginx-debian.html;
server_name example.com www.example.com; #example.com is different in both files.
location / {
try_files $uri $uri/ =404;
}
}
主要不协调:
另一个stackoverflow问题建议重新编写这些行或注释其中之一。 重写要么不能解决错误,要么导致文件无法公开访问(example.com找不到)。
总结:
这个问题似乎是关于第2行、第3行或第2行和第3行的。
基本上,所有的指南都明确告诉读者使用上述代码-或-他们不提及这些行。