语 法:server_name name ...;
默认值:server_name "";
上下文:server
设置虚拟服务器的名称,例如:
server { server_name example.com www.example.com; }
第一个名称成为主服务器名称。
服务器名称可以包含一个星号(“*”)来代替名称的第一部分或最后一部分:
server { server_name example.com *.example.com www.example.*; }
此类名称称为通配符名称。
上面提到的前两个名称可以合二为一:
server { server_name .example.com; }
也可以在服务器名称中使用正则表达式,在名称前加上波浪号(“~”):
server { server_name www.example.com ~^www\d+\.example\.com$; }
正则表达式可以包含稍后可以在其他指令中使用的捕获(0.7.40):
server { server_name ~^(www\.)?(.+)$; location / { root /sites/$2; } } server { server_name _; location / { root /sites/default; } }
正则表达式中的命名捕获创建变量(0.8.25),以后可以在其他指令中使用:
server { server_name ~^(www\.)?(?<domain>.+)$; location / { root /sites/$domain; } } server { server_name _; location / { root /sites/default; } }
如果指令的参数设置为“$hostname”(0.9.4),则插入机器的主机名。
也可以指定一个空的服务器名称 (0.7.11):
server { server_name www.example.com ""; }
它允许此服务器处理没有“Host”头字段的请求 —— 而不是默认服务器 - 对于给定的 address:port 对,这是默认设置。
在 0.8.48 之前,默认使用机器的主机名。
在按名称搜索虚拟服务器期间,如果名称匹配多个指定变体(例如,通配符名称和正则表达式匹配),将按以下优先级顺序选择第一个匹配变体:
确切的名字
以星号开头的最长通配符名称,例如 “*.example.com”
以星号结尾的最长通配符名称,例如 “mail.*”
第一个匹配的正则表达式(按照在配置文件中出现的顺序)