Nginx静态资源配置核心是精准匹配路径或后缀并直读文件:用~*正则统一处理常见扩展名,^~前缀匹配静态目录,alias优于root映射,禁止访问敏感路径,try_files提升容错与性能。

在 Nginx 的 location 块中配置静态资源响应规则,核心是精准匹配请求路径或后缀,直接由 Nginx 读取文件并返回,不经过 PHP 或其他后端处理器。
用正则匹配常见静态文件类型
适合统一处理图片、CSS、JS 等资源,提升可读性和维护性:
- 使用
~*(不区分大小写正则)匹配扩展名,避免遗漏.JPG或.Css - 指定
root或alias指向实际文件存放目录 - 添加
expires和add_header启用缓存与安全头
示例:
root /var/www/static;
expires 1y;
add_header Cache-Control "public, immutable";
}
用前缀匹配特定静态目录
适用于将 /static/、/uploads/ 这类路径明确映射到独立目录:
-
^~ /static/表示前缀匹配,高效且不参与正则竞争 -
alias更适合目录映射(注意末尾斜杠:alias /data/assets/;而非/data/assets) - 避免用
root配合带路径的 location,否则可能拼出错误物理路径
示例:
location ^~ /uploads/ {alias /var/www/uploads/;
expires 7d;
add_header Content-Security-Policy "default-src 'none'";
}
禁止访问敏感目录或隐藏文件
静态资源区域也需安全兜底,防止源码泄露或配置文件被下载:
- 用
location ~* /(runtime|application|\.git|\.env|\.log)匹配危险路径 - 统一返回
403或404,不暴露存在性 - 放在 server 块靠前位置,确保优先匹配
示例:
location ~* /(runtime|application|\.git|\.env|\.log) {return 403;
}
结合 try_files 提升容错与性能
当静态资源可能缺失时,用 try_files 避免 404,同时减少不必要的重写判断:
-
try_files $uri $uri/ =404是最简静态服务模式 - 若需 fallback 到 CDN 或占位图,可写成
try_files $uri /img/placeholder.png - 比
if (!-e $request_filename)更高效,无隐式性能开销
示例:
location /assets/ {alias /var/www/dist/;
try_files $uri =404;
gzip_static on;
}


















