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 的問題了

參考資料

comments powered by Disqus
All rights reserved,未經允許不得隨意轉載
Built with Hugo
Theme Stack designed by Jimmy