配置服务器名称

服务器名称

server {
    listen      80;
    server_name example.org www.example.org;
    ...
}

服务器名称说明

  • server_name:指定服务器名称

服务器名称原理: Nginx 根据请求的 Host 头选择虚拟服务器。当 Nginx 收到一个请求时,会根据请求的 Host 头选择匹配的服务器名称。

通配符名称

server {
    listen      80;
    server_name example.org *.example.org www.example.*;
    ...
}

通配符名称说明

  • *.example.org:匹配所有以 .example.org 结尾的域名
  • www.example.*:匹配所有以 www.example. 开头的域名

通配符名称原理: 通配符名称用于匹配多个域名。通配符 * 可以匹配任意字符,但不能匹配 .

正则表达式名称

server {
    listen      80;
    server_name ~^(?<user>.+)\.example\.net$;
    ...
}

正则表达式名称说明

  • ~^(?<user>.+)\.example\.net$:使用正则表达式匹配域名

正则表达式名称原理: 正则表达式名称用于匹配复杂的域名。正则表达式可以使用捕获组,捕获组可以在配置中使用。

混合名称

server {
    listen      80;
    server_name example.org *.example.org ~^(?<user>.+)\.example\.net$;
    ...
}

混合名称说明

  • example.org:精确匹配
  • *.example.org:通配符匹配
  • ~^(?<user>.+)\.example\.net$:正则表达式匹配

混合名称原理: 混合名称可以同时使用精确匹配、通配符匹配和正则表达式匹配。

缺失名称

server {
    listen      80;
    server_name "";
    ...
}

缺失名称说明

  • server_name "":匹配没有 Host 头的请求

缺失名称原理: 缺失名称用于匹配没有 Host 头的请求。

服务器名称匹配顺序

  1. 精确匹配
  2. 通配符匹配(以 * 开头)
  3. 通配符匹配(以 * 结尾)
  4. 正则表达式匹配

服务器名称匹配顺序原理: Nginx 按照精确匹配、通配符匹配(以 * 开头)、通配符匹配(以 * 结尾)、正则表达式匹配的顺序匹配服务器名称。