nginx location 匹配
URL 路径匹配规则,控制不同路径的处理方式
语法
location [modifier] pattern { ... }参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
(无修饰符) |
前缀匹配 | location /api/ { ... } |
常用 |
= |
精确匹配 | location = / { ... } |
常用 |
~ |
正则匹配(区分大小写) | location ~ \.php$ { ... } |
进阶 |
~* |
正则匹配(不区分大小写) | location ~* \.(jpg|png|gif)$ { ... } |
进阶 |
^~ |
前缀匹配(优先于正则) | location ^~ /static/ { ... } |
进阶 |
示例
静态文件缓存
location ~* \.(css|js|jpg|png|gif|ico)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}图片和静态资源缓存 30 天
API 代理
location /api/ {
proxy_pass http://localhost:3000/;
}/api/users → localhost:3000/users
精确匹配首页
location = / {
# 只匹配 / 不匹配 /about
}精确匹配性能最好
禁止访问隐藏文件
location ~ /\. {
deny all;
return 404;
}阻止访问 .git、.env 等
常见错误
location 匹配不到预期路径
匹配优先级:= > ^~ > ~ > 前缀。用 nginx -T 查看完整配置确认
技巧
- 匹配优先级:精确(=) > 前缀(^~) > 正则(~) > 普通前缀
- proxy_pass 末尾有无 / 影响路径传递
- 用 try_files 实现 SPA 路由回退