Edit: Read this, first:
Apart from the accepted answer, these errors occur when nginx is started without systemd. Kill nginx: ps -ax | grep nginx
→ find the nginx master pid → kill ###
; run nginx with systemd: systemctl start nginx
.
If systemctl is not used to start nginx, systemctl stop nginx doesn't seem to work (at least on my server); so, systemctl restart nginx gives this error when it tries to start nginx a second time.
About my setup:
I'm on Debian 10, Buster, with a live server. I have tested both domain names, and they broadcast by themselves using these config files, but they do not broadcast when both config files are active.
What I'm trying to accomplish:
How do I set up two websites on a single ip address using nginx?
Error message(s):
nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/example.com:22
line 2.
nginx: [emerg] a duplicate default server for 0.0.0.0:443 in /etc/nginx/sites-enabled/example.com:22
line 2. default_server
is used on port 443.
nginx: [emerg] duplicate listen options for [::]:443 in /etc/nginx/sites-enabled/example.com:23
line 3. default_server
tried as http2
in one file and port 443 is used.
nginx: [emerg] duplicate listen options for [::]:80 in /etc/nginx/sites-enabled/example.com:23
line 3. default_server
tried as http2
in one file.
nginx: [emerg] invalid parameter "example.com" in /etc/nginx/sites-enabled/example.com:23
line 3: default_server
tried as example.com
Config files (comments stripped):
There are two of these files (code seen below). My config files are exactly as-seen in the code block below with only one difference: in both files, example.com
is a real, unique domain name that I own.
My config files live in /etc/nginx/sites-available
, and they are symlinked to /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;
}
}
Primary dissonance:
Another stack question says to rewrite these lines or comment one of them out. The rewrites either do not resolve the error or result in a situation where files are not publicly served (example.com goes nowhere).
Summary:
This question seems to be about line 2, line 3, or line 2 and 3.
Essentially, all of the leading how-to's either expressly tell the reader to use the code above -or- they don't mention these lines.