在使用 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
)試試是否能正常訪問。