Featured image of post 解决 Nginx conflicting server name 问题

解决 Nginx conflicting server name 问题

解决 Nginx conflicting server name 问题

在执行 nginx 服务时,出现了 conflicting server name on 0.0.0.0:80, ignored 的讯息

$ nginx -s reload
nginx: [warn] conflicting server name "kejyun.com" on 0.0.0.0:80, ignored

通常这个讯息表示,同一个网址或 port 有 2 个以上的设定,通常这样是不会影响 nginx 的执行,nginx 会以优先载入的设定当作这个网址的设定,后面多馀的设定就会忽略不处理

但看到这样的讯息出现还是有点碍眼,可能会导致之后设定错误到错误的设定档案,所以儘量还是不要出现错误警告讯息比较好

出现 conflicting server name on 0.0.0.0:80, ignored 可能原因

同一个 server_name 但有相同的 port

像是我们要针对 80 port 的请求都 301 导向至 443 port,所以我们的设定会长得像这样

server {
    listen 80;
    server_name kejyun.com;
    return 301 https://$host$request_uri;
}

然后在原本的 80 port 设定档案加入了 listen 443 ssl; 倾听 443 port 的设定,但忘了把原本的 80 port 设定删除,这样就导致有同样的 80 port 都在等着处理请求

server {
    listen 80;
    listen 443 ssl;
    server_name kejyun.com;
}

为了解决这个问题就需要把不需要的 port 设定关掉,这裡就把 443 port 中的 listen 80 註解掉,这样就不会出现错误讯息了

server {
    # listen 80;
    listen 443 ssl;
    server_name kejyun.com;
}

解决 conflicting server name on 0.0.0.0:80, ignored

1. 找出目前 nginx 设定档案目录

通常网站的设定档案没有异动的话都会放在下面目录中

  • /etc/nginx/conf.d/
  • /etc/nginx/sites-enabled/

所以我们会需要找 /etc/nginx 目录下面所有设定即可,若找不到的话,可以到 nginx 设定档案 /etc/nginx/nginx.conf 看看还有载入哪些目录的设定档

# /etc/nginx/nginx.conf
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

2. 找出 conflicting server name 的网址设定在哪些档案

使用 grep 指令搜寻 /etc/nginx 目录中有出现 kejyun.com 字样的设定在哪,可以看到相关的设定档案在 /etc/nginx/sites-available/kejyun.com 档案中,若有其他设定的话,可能会有重複出现在多个档案,像是 /etc/nginx/sites-available/other.kejyun.com ,那就要从这些设定档案找到出现设定网址的地方

$ grep -r kejyun.com /etc/nginx/
/etc/nginx/sites-available/kejyun.com:    server_name kejyun.com;
/etc/nginx/sites-available/kejyun.com:    error_log  /var/log/nginx/kejyun.com-error.log error;
/etc/nginx/sites-available/kejyun.com:    ssl_certificate /etc/letsencrypt/live/kejyun.com/fullchain.pem; # managed by Certbot
/etc/nginx/sites-available/kejyun.com:    ssl_certificate_key /etc/letsencrypt/live/kejyun.com/privkey.pem; # managed by Certbot
/etc/nginx/sites-available/kejyun.com:    server_name kejyun.com;

3. 检查所有 server name 出现的档案

检查网域出现的设定档案看彼此有没有 重複设定 的地方,像是 设定同样的 port 在处理请求,找出重複设定的状况即可解决 onflicting server name on 0.0.0.0:80, ignored 的问题了

参考资料

Donate KJ 贊助作者喝咖啡

如果這篇文章對你有幫助的話,可以透過下面支付方式贊助作者喝咖啡,如果有什麼建議或想說的話可以贊助並留言給我
If this article has been helpful to you, you can support the author by treating them to a coffee through the payment options below. If you have any suggestions or comments, feel free to sponsor and leave a message for me!
方式 Method 贊助 Donate
PayPal https://paypal.me/kejyun
綠界 ECPay https://p.ecpay.com.tw/AC218F1
歐付寶 OPay https://payment.opay.tw/Broadcaster/Donate/BD2BD896029F2155041C8C8FAED3A6F8
All rights reserved,未經允許不得隨意轉載
Built with Hugo
主题 StackJimmy 设计