啟動WNMP 警告報錯 nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored 的解決方法


在phpStudy_pro中 啟動WNMP 出現這個問題,

 

 

雖然說,不影響服務器正常使用的,但是作為程序員,看不慣有 警告“warning”的瑕疵存在……

搜了很多帖子,發現有很多類似的情況出現,有些是在 Linux 下報這樣的錯,但我的是在集成環境PHPStudy_pro中啟動WNMP出現了這樣的提醒。

 

【發現問題】 

在部署服務器時,需要按照本地配置進行編寫nginx配置文件,

修改nginx配置參數后,使用nginx -t檢查配置.

提示successfull后就可以使用 nginx -s reload來重新加載配置

配置的過程中遇到這樣的問題,就是綁定了主機名后,重新加載配置時會出現警告

 

nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored

 

意思是重復綁定了server name,但這個警告不會影響到服務器運行。

而且,這個重復綁定的意思是現在運行的nginx服務和將要加載的新配置中的重復,所以,這個警告其實是不必的。

重啟nginx時出現如下警告:

nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored

 

【問題原因】

原因是 “localhost” 這個域名出現了兩次甚至多次,把同一個域名解析到了不同的目錄, 一般將配置文件單獨分離出來容易出現這個錯誤

就是同一個IP或端口號,綁了兩三個域名的,要改!

不過這個警告不影響使用,大多數人會忽視它,無視!

 

在給第一個主機設定了default_server的時候,重新加載配置就會出錯,

最初就是這個原因,誤以為nginx不能在同一ip端口綁定多個域名。

但其實是可以的!!!(我做的在后邊,同時一個IP被三個域名解析了:host 、host.ll 、test.ll

一般的辦法是殺掉nginx進程重新啟動(taskkill-windows下,kill-Linux下),或者先去掉default_server設定,重新加載nginx配置后,再加上,再重新配置。

這個方法比較麻煩,有大牛級別的方法,歡迎留言提供

參考:https://www.shirne.com/blog/linux/nginxxunizhujipeizhibeiwang.html

  

【解決方法】

Linux環境下->命令修改

Linux系統環境下,需要查詢出現這個域名的文件,使用grep這個命令

grep -r localhost /*nginx的路徑*/conf

找到配置文件的位置再進行配置

cd /usr/local/nginx/conf
vi nginx.conf

#為避免沖突警告盡量避免使用 localhost、127.0.0.1、0.0.0.0等等之類
#server_name  localhost;
 server_name host host.ll test.ll;

修改之后重啟即可!!!

 

附:

nginx虛擬主機配置可參考:https://blog.csdn.net/Shiloh_My/article/details/79996426

配置參數的含義可參考:https://blog.csdn.net/qq_37818095/article/details/105515177  (Nginx配置文件 nginx.conf 配置詳解)

配置文件的功能注釋可參考:https://blog.csdn.net/zhao8848jun/article/details/8254590  (Nginx配置文件功能注釋)

有空了,我再自己整理一個Apache的配置文件相關注釋

 

Windows環境下->文件編輯

 nginx有個默認的端口檢測,如443,80等等,它也會報這個錯,因為這端口可能被mysql或者redis或者tomcat,https之類的占了

還有127.0.0.1,0.0.0.0,localhost之類的也不要用,遲早會報錯。

打開服務器的配置文件,該修改的修改,按照命名規范來操作,

避免出現沖突!

 打開 vhosts 文件夾:phpstudy_pro\Extensions\Nginx1.15.11\conf\vhosts

找到 0localhost_80.conf 文件,把以前的 “server_name localhost” 注釋重寫或稍作修改均可:

        #為避免沖突警告盡量避免使用 localhost、127.0.0.1、0.0.0.0等等之類
        #server_name localhost;
 server_name host host.ll test.ll;

這就是,一個IP同時被三個域名解析了:host 、host.ll 、test.ll

 

最后一步

緊接着,最重要的一步就是:還需要配置linux / win下邊的host文件

nginx本地hosts映射

#域名解析IP地址
#本地IP->hosts映射
127.0.0.1 host
127.0.0.1 host.ll
127.0.0.1 test.ll

一個IP同時被三個域名解析的hosts映射:host 、host.ll 、test.ll

 Linux系統和Windows系統是一樣的,文件都是hosts,

路徑分別是在/etc/hosts  和 C:\Windows\System32\drivers\etc\hosts(通常是被隱藏起來的文件)

 ( 參考:https://www.cnblogs.com/ydymz/p/9542912.html)

 這一步非常非常重要重要!沒有這一步,任何除 “localhost 、127.0.0.1”的私人本地地址都不能被訪問的到!

很有意思的是,即使你把 baidu.com 映射到127.0.0.1 ,你打開百度網址,也會顯示的是本地 測試頁面,哈哈哈O(∩_∩)O哈哈哈~(前提是,不能帶 www ,帶了就會出現訪問失敗,沒權限!域名帶www和不帶的區別,后續再寫一篇

 

 

 

 

 

OK!如此配置完畢,一切正常運行: 不在有彈出warning的彈框 !

測試本地host ,如果使用Google瀏覽器的話需要把 http 也加入地址中:http:test.ll 

這是避免瀏覽器自動使用搜索引擎來搜索地址 test.ll ,

 

 測試成功的結果如下(自己寫的一個index.html 測試頁面,直接訪問127.0.0.1:80 <加不加端口號80均可>是直接可以打開本地頁面的):

 

 

【小結】

出現這樣的問題,就是命名不規范的原因,現在nginx 1.14/15 是警告/報錯,以后注意規范自己的命名,不然wran遲早會變成error的。

也提醒我們開發時,要時刻規整自己的習慣,按照規范化標准來要求自己,慢慢養成好習慣,聚沙成塔、集腋成裘,但要避免積重難返!

 

 ---------------------------------------------------------------------------------------------------------------------------------

凡事預則立不預則廢,養成復盤總結的微小習慣:改變自己,改變世界,把握當下,把握現在,每天前進1%,享受“復利式成長”!

@Anthony_GM

2022-4-8 11:57:02


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM