域名匹配

nginx域名匹配使用server_name指令进行配置

匹配规则如下

  • 精准匹配

多个域名都写上,精准匹配

server {
     listen       80;
     server_name  a.com b.com a.b.com;
 
}
  • 通配符在前
    以通配符*开始
server {
     listen       80;
     server_name  *.abc.com;
}

通配符在后
以通配符*结尾

server {
     listen       80;
     server_name  abc.*;
}
  • 正则匹配

以正则表达式来匹配

server {
     listen       80;
     server_name  ~^(?.+)\.abc\.com$;
     
}

不能只使用一个*来匹配所有域名

server_name优先级如下:

1、精准匹配
2、通配符在前
3、通配符在后的
4、正则匹配
前面的匹配到就不会进行后面的规则
如果都不匹配
1、优先选择listen配置项后有default或default_server的
2、找到匹配listen端口的第一个server块

server {
     listen 80 default;
     server_name  aaa.com; 
}

绑定多个端口

有以下两种方式

  • 配置多个server
server {
     listen       80;
     server_name  abc.com;
     }
     server {
     listen       8080;
     server_name  abc.com;
     }
  • 一个server里写多个listen
server {
     listen       80;
     listen       8080;
     server_name  abc.com;
     }