官方解释说明: https://nginx.org/en/docs/http/server_names.html
#几种格式
server {
listen 80;
server_name example.org www.example.org;
...
}
server {
listen 80;
server_name *.example.org;
...
}
server {
listen 80;
server_name mail.*;
...
}
server {
listen 80;
server_name ~^(?<user>.+)\.example\.net$;
...
}
在按名称搜索虚拟服务器时,如果名称与多个指定变体匹配,例如通配符名称和正则表达式都匹配,则将按以下优先顺序选择第一个匹配的变体:
- 确切的名字
- 以星号开头的最长通配符名称,例如“ *.example.org”
- 以星号结尾的最长通配符名称,例如“ mail.*”
- 第一个匹配的正则表达式(按照在配置文件中出现的顺序)
通配符名称
通配符名称只能在名称的开头或结尾处包含星号,并且只能在点边框上。名称“www.*.example.org”和“w*.example.org”无效。但是,可以使用正则表达式指定这些名称,例如“ ~^www..+.example.org$”和“~^w.*.example.org$”。星号可以匹配多个名称部分。名称“.example.org”不仅匹配,www.example.org而且匹配 www.sub.example.org。
“.example.org”形式的特殊通配符名称可用于匹配确切名称“example.org”和通配符名称**“.example.org”**。
正确写法:
server {
listen 80;
server_name *.itguigu.com www.itguigu.* ;
.....
}
错误写法:
server {
listen 80 ;
server_name www.*.com www.itguigu.c* ;
}
* 号不能出现在域名中间,只能处于开头可末尾