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