<p>~ 实现大小写不敏感正则匹配,语法为 location ~ pattern { ... },pattern 建议引号包裹,仅影响 URI 匹配,不改变文件系统大小写,优先级低于 = 和 ^~,按配置顺序匹配首个成功项。</p>

用 ~* 前缀就能实现大小写不敏感的正则匹配。
基本写法
语法是:location ~* pattern { ... },其中 pattern 是正则表达式,不区分字母大小写。
-
~*必须紧挨着空格写在location后面,不能有换行或多余字符 - 正则部分建议用引号包裹,尤其含特殊符号时,比如
~* "\.(jpg|JPG|png)$"可简写为~* \.(jpg|png)$(因为已不区分大小写) - 注意:它只影响 URI 字符串的匹配逻辑,不改变文件系统中实际文件名的大小写——服务器仍需存在对应大小写的文件
常见使用场景
适合处理静态资源、统一入口、兼容旧链接等需要忽略大小写的请求。
- 匹配图片资源:
location ~* \.(gif|jpg|jpeg|png|webp)$ { expires 1h; } - 匹配 API 路径(如 /api/UserInfo 和 /api/userinfo 都生效):
location ~* ^/api/userinfo$ { proxy_pass http://backend; } - 匹配带参数的路径(正则中可忽略查询字符串,Nginx 默认不参与匹配):
location ~* /download/.*\.pdf$ { root /var/www/files; }
注意匹配优先级
~* 属于正则匹配类型,优先级低于 = 和 ^~,但高于普通前缀匹配(如 location /abc)。
- 如果同时存在
^~ /images/和~* \.png$,所有/images/xxx.png请求都会走^~规则,不会进入正则分支 - 多个
~*规则按配置文件中出现的**顺序**匹配,第一个成功即终止,后续不再检查 - 若想确保某条
~*生效,把它放在靠前位置,或用^~显式拦截干扰路径
调试小技巧
加日志或返回简单响应,快速验证是否命中:
location ~* /test/.* { return 200 "Matched by ~*: $uri\n"; }- 用
curl -I http://localhost/test/ABC查看响应头,确认是否触发 - 检查 Nginx 错误日志(
error.log),常有 “no matching location” 提示,帮助定位漏配


















