很多人會(huì)錯(cuò)誤地配置 default server列荔,就像這樣
server_name _;
然而這條指令的真實(shí)意思是沒有匹配吱窝,只有在沒有匹配到任何 server_name
的時(shí)候才有可能選擇它腻异,但是也不一定就會(huì)選擇它。
Nginx 在沒有匹配到的時(shí)候會(huì)選擇第一個(gè) server,因此 server 順序很重要敞峭,如果配置成 _
的 server 不是第一個(gè),那么這個(gè) server 就不會(huì)被選擇蝉仇。
由此可以看出旋讹,_
不是默認(rèn)服務(wù)器,僅僅是未匹配轿衔。
一般來說使用這個(gè)配置的服務(wù)器是寫在 nginx.conf
里面的沉迹,而 include
指令寫在這個(gè) server 的后面,這樣就保證了這個(gè)是第一個(gè)害驹。
真正的 default server 應(yīng)該采用如下配置鞭呕,這樣在沒有匹配到的時(shí)候,不管順序怎么樣宛官,都會(huì)選擇這個(gè) server葫松。
listen 80 default_server;
參考 https://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server/