服务器名称用于定义虚拟服务器的主机名。
服务器名称原理: 服务器名称用于定义虚拟服务器的主机名,Nginx 根据请求的 Host 头选择虚拟服务器。当 Nginx 收到一个请求时,会根据请求的 Host 头选择匹配的服务器名称。
服务器名称优势:
server {
listen 80;
server_name example.org www.example.org;
...
}
基本配置说明:
server_name example.org www.example.org:指定服务器名称为 example.org 和 www.example.org基本配置原理:
server_name 指令用于指定服务器名称,可以指定多个服务器名称,用空格分隔。Nginx 会根据请求的 Host 头选择匹配的服务器名称。
服务器名称可以分为以下几类:
example.org、www.example.org* 匹配的服务器名称,如 *.example.org、www.example.*~^(?<user>.+)\.example\.net$命名规则原理: Nginx 支持多种命名规则,可以根据需求选择合适的命名规则。精确名称的优先级最高,通配符名称的优先级次之,正则表达式名称的优先级最低。
Nginx 按照以下顺序匹配服务器名称:
example.org、www.example.org* 开头):以 * 开头的通配符名称,如 *.example.org* 结尾):以 * 结尾的通配符名称,如 www.example.*~^(?<user>.+)\.example\.net$服务器名称匹配顺序原理:
Nginx 按照精确匹配、通配符匹配(以 * 开头)、通配符匹配(以 * 结尾)、正则表达式匹配的顺序匹配服务器名称。
正则表达式名称可以使用捕获组,捕获组可以在配置中使用:
server {
listen 80;
server_name ~^(?<user>.+)\.example\.net$;
location / {
root /data/$user;
}
}
服务器名称捕获组说明:
(?<user>.+):正则表达式捕获组,捕获用户名$user:使用捕获的用户名服务器名称捕获组原理: 正则表达式捕获组用于提取服务器名称中的信息,可以在配置中使用。
如果请求的 Host 头不匹配任何服务器名称,Nginx 会使用默认服务器处理请求:
server {
listen 80 default_server;
server_name example.net www.example.net;
...
}
服务器名称缺失说明:
default_server:指定默认服务器服务器名称缺失原理: 当 Nginx 收到一个请求时,如果请求的 Host 头不匹配任何服务器名称,会使用默认服务器处理请求。
服务器名称匹配是不区分大小写的:
server {
listen 80;
server_name example.org;
...
}
服务器名称大小写说明:
example.org:匹配 Example.Org、EXAMPLE.ORG 等服务器名称大小写原理: 服务器名称匹配是不区分大小写的,Nginx 会将服务器名称转换为小写后进行匹配。