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指令)。
相关文章
相关标签/搜索