EKsumic's Blog

let today = new Beginning();

Click the left button to use the catalog.

OR

解決 Nginx 中 "conflicting server name "_" on 0.0.0.0:80, ignored" 警告

在使用 Nginx 時,如果你看到下列警告:

conflicting server name "_" on 0.0.0.0:80, ignored

這表示在你的 Nginx 配置中,有多個 server 块嘗試監聽相同的 IP 和端口(這裡是 0.0.0.0:80),並且其中至少有二個使用相同的 server_name 值為 _(即“匹配所有詢求”)。爲了避免衝突,Nginx 將選擇忽略其中一個。

以下將解釋如何解決這個問題,使你的 Nginx 配置更加清楚和穩定。


1. 查找衝突的配置檔

首先,查看部署監聽 80 端口的所有 server 配置:

grep -R "listen 80" /etc/nginx/sites-available /etc/nginx/sites-enabled

這條指令會將所有在 /etc/nginx/sites-available/etc/nginx/sites-enabled 相關目錄中的配置檔中含有 listen 80 的行列出來。


2. 分析輸出結果

如果發現有多個 server 块監聽一樣的端口,並且 server_name_或重複,那麼就需要將這些配置做重新設定。


3. 解決方法

方法 1:為每個 server 块指定唯一的 server_name

在你的 Blazor Web App 配置中,將 server_name 修改成你的伺服器 IP 地址(如果沒有域名):

server {
    listen 80;
    server_name <你的伺服器IP>;

    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

<你的伺服器IP> 替換成實際的伺服器 IP 地址,例如 192.168.1.100


方法 2:指定預設伺服器

如果你想讓 Blazor Web App 配置成為預設處理所有詢求的伺服器,可以在 listen 指令中添加 default_server

server {
    listen 80 default_server;
    server_name _;

    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

這麼做,不管詢求來自哪裏,都會被導向 Blazor Web App。


方法 3:禁用其他預設站點

在 Nginx 中,通常在 /etc/nginx/sites-enabled 目錄中有一個預設的站點配置檔(如 default)。你可以禁用它:

sudo rm /etc/nginx/sites-enabled/default

然後重新載入 Nginx 配置:

sudo nginx -t
sudo systemctl reload nginx

4. 確認最終狀況

重新執行下列指令來確保沒有衝突:

sudo nginx -t

確認沒有新的警告。

最後,重啟 Nginx:

sudo systemctl restart nginx

使用伺服器 IP 地址(例如 http://192.168.1.100)試試是否能正常訪問。

This article was last edited at 2025-01-21 17:14:55

* *