51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

nginx正则匹配

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 ]
}
赞(9)
未经允许不得转载:工具盒子 » nginx正则匹配