nginx正则匹配
^:匹配字符串的开头。
$:匹配字符串的尾。
.:匹配任意字符。
*:匹配前面的字符0次或多次。
+:匹配前面的字符1次或多次。
?:匹配前面的字符0次或1次。
[]:匹配方括号中的任意一个字符。
():分组匹配。
示例一:匹配URL中的数字
location ~ /article/(\d+) {
# 匹配/article/后面的数字
# $1表示第一个分组匹配的内容
proxy_pass http://backend/article/$1;
}
示例二:配请求头中的User-Agent
if ($http_user_agent ~* (chrome|firefox)) {
# 匹配User-Agent中包含chrome或firefox的请求
return 403;
}
{#more-15320}
location = / {
# 仅仅匹配请求 /
[ configuration A ]
}
location / {
# 匹配所有以 / 开头的请求。
# 但是如果有更长的同类型的表达式,则选择更长的表达式。
# 如果有正则表达式可以匹配,则优先匹配正则表达式。
[ configuration B ]
}
location /documents/ {
# 匹配所有以 /documents/ 开头的请求。
# 但是如果有更长的同类型的表达式,则选择更长的表达式。
# 如果有正则表达式可以匹配,则优先匹配正则表达式。
[ configuration C ]
}
location ^~ /p_w_picpaths/ {
# 匹配所有以 /p_w_picpaths/ 开头的表达式,如果匹配成功,则停止匹配查找。
# 所以,即便有符合的正则表达式location,也不会被使用
[ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配所有以 gif jpg jpeg结尾的请求。
# 但是 以 /p_w_picpaths/开头的请求,将使用 Configuration D
[ configuration E ]
}