nginx server_name匹配順序

server_name可爲IP/domain/localhost/null等任何字符串(字符串server_name也能夠用來匹配),注意各個 server 塊的順序。nginx

1.若是隻有一個server,server_name能夠任意起(能夠爲IP/域名/任何字符串),則不論用什麼訪問(IP/域名/字符串),不論server_name是否匹配,都匹配到此server;正則表達式

2.有多個server,若是server_name能夠匹配到任何一個server的server_name,則使用此server,不然匹配到第一個server塊,不論server_name是否匹配dom

 

一、準確的server_name匹配,例如:server

 

server {
     listen       80;
     server_name  domain.com  www.domain.com;
     ...
}

 

 

二、以*通配符開始的字符串:字符串

server {
     listen       80;
     server_name  *.domain.com;
... }

三、以*通配符結束的字符串:域名

server {
     listen       80;
     server_name  www.*;
     ...
}

四、匹配正則表達式:io

server {
     listen       80;
     server_name  ~^(?.+)\.domain\.com$;
... }
nginx將按照1,2,3,4的順序對server name進行匹配,只有有一項匹配之後就會中止搜索,因此咱們在使用這個指令的時候必定要分清楚它的匹配順序(相似於location指令)。
相關文章
相關標籤/搜索