通配符名称

通配符名称

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

通配符名称说明

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

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

通配符规则

  • * 可以匹配多个名称
  • *.example.org 匹配 www.example.orgwww.sub.example.org
  • www.example.* 匹配 www.example.orgwww.example.net
  • * 只能出现在名称的开头或结尾

通配符规则原理: 通配符 * 可以匹配任意字符,但不能匹配 .。通配符 * 只能出现在名称的开头或结尾,不能出现在名称的中间。

通配符匹配顺序

Nginx 按照以下顺序匹配通配符名称:

  1. 通配符匹配(以 * 开头):以 * 开头的通配符名称,如 *.example.org
  2. 通配符匹配(以 * 结尾):以 * 结尾的通配符名称,如 www.example.*

通配符匹配顺序原理: Nginx 按照通配符匹配(以 * 开头)、通配符匹配(以 * 结尾)的顺序匹配通配符名称。

通配符匹配示例

通配符名称匹配的域名不匹配的域名
*.example.orgwww.example.orgwww.sub.example.orgexample.orgwww.example.com
www.example.*www.example.orgwww.example.netexample.orgsub.www.example.org
*.example.*www.example.orgwww.example.netexample.orgwww.example.com

示例

server_name *.example.org;
server_name www.example.*;

示例说明

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

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

通配符名称优化

通配符名称在哈希表中查找,查找速度快。

通配符名称优化原理: 通配符名称在哈希表中查找,查找速度快,可以快速匹配通配符名称。

注意事项

  • 通配符名称在哈希表中查找
  • 通配符名称优先级低于精确名称
  • 通配符名称优先级高于正则表达式名称
  • 通配符 * 不能匹配 .
  • 通配符 * 只能出现在名称的开头或结尾