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 查看完整配置确认

技巧

相关命令