server {
listen 80;
server_name ~^(?<user>.+)\.example\.net$;
...
}
正则表达式名称说明:
~^(?<user>.+)\.example\.net$:使用正则表达式匹配域名正则表达式名称原理: 正则表达式名称用于匹配复杂的域名,正则表达式可以使用捕获组,捕获组可以在配置中使用。
~ 开头~* 不区分大小写正则表达式规则原理:
正则表达式名称以 ~ 开头,~ 表示区分大小写,~* 表示不区分大小写。正则表达式可以使用命名捕获,捕获组可以在配置中使用。
Nginx 按照声明顺序测试正则表达式名称。
正则表达式匹配顺序原理: Nginx 按照声明顺序测试正则表达式名称,第一个匹配的正则表达式名称会被使用。
正则表达式名称的优先级最低。
正则表达式优先级原理:
Nginx 按照精确匹配、通配符匹配(以 * 开头)、通配符匹配(以 * 结尾)、正则表达式匹配的顺序匹配服务器名称。
server_name ~^(?<user>.+)\.example\.net$;
server_name ~^www\d+\.example\.net$;
server_name ~*example\.net$;
示例说明:
~^(?<user>.+)\.example\.net$:匹配 user.example.net,捕获用户名~^www\d+\.example\.net$:匹配 www1.example.net、www2.example.net 等~*example\.net$:匹配 Example.Net、EXAMPLE.NET 等示例原理: 正则表达式名称用于匹配复杂的域名,正则表达式可以使用捕获组,捕获组可以在配置中使用。
正则表达式名称可以使用命名捕获组,捕获组可以在配置中使用:
server {
listen 80;
server_name ~^(?<user>.+)\.example\.net$;
location / {
root /data/$user;
}
}
正则表达式捕获组说明:
(?<user>.+):正则表达式捕获组,捕获用户名$user:使用捕获的用户名正则表达式捕获组原理: 正则表达式捕获组用于提取服务器名称中的信息,可以在配置中使用。
正则表达式名称性能较低。
正则表达式性能原理: 正则表达式名称需要逐个测试,性能较低。建议优先使用精确名称和通配符名称,避免使用正则表达式名称。
~* 不区分大小写