當(dāng)請(qǐng)求走進(jìn) nginx 時(shí),會(huì)依次匹配每一個(gè) server 和 location 塊习霹。
當(dāng)某個(gè)請(qǐng)求訪問了未綁定的 server_name朵耕,由于每個(gè) server 和 location 都訪問不上,就會(huì)默認(rèn)選擇第一個(gè)淋叶,下面舉例說明:
nginx配置文件節(jié)選
server {
location {
server_name a.example.com;
index index.html;
}
location {
server_name b.example.com;
index index.html;
}
}
當(dāng)請(qǐng)求訪問的地址是 c.example.com 的時(shí)候會(huì)發(fā)生什么阎曹?
答案是請(qǐng)求匹配到了 a.example.com。
所以為了阻止這種情況的發(fā)生煞檩,可以配置一個(gè)默認(rèn)的 server 塊用于阻止非法請(qǐng)求:
server {
listen 80;
listen 443;
return 444;
}
server {
location {
server_name a.example.com;
index index.html;
}
location {
server_name b.example.com;
index index.html;
}
}
另外处嫌,你還可以通過先顯式指定 default_server 的方式:
server {
listen 80 default_server;
listen 443 default_server;
return 444;
}
這樣你就不必依賴 server 塊配置的順序了,推薦斟湃。