nginx实现静态资源分发的核心是直接响应css、js、图片等请求,不经过后端应用,从而降低压力、提升速度与并发能力;需明确存放路径、精准配置location匹配规则(root/alias)、启用sendfile、强缓存、gzip压缩及安全限制。

用 Nginx 实现静态资源分发,核心是让 Nginx 直接响应图片、CSS、JS 等文件请求,不经过后端应用(如 Tomcat、Node.js),从而降低后端压力、提升响应速度和并发能力。
明确静态资源存放位置
把所有静态文件统一放到一个或多个本地目录(如 /data/static)或远程存储(如对象存储挂载点)。确保 Nginx 进程有读取权限,路径避免暴露敏感目录(如 /etc 或项目源码根目录)。
- 推荐结构示例:
/data/static/css/、/data/static/js/、/data/static/images/ - 若使用 CDN 或多台 Nginx,可将静态资源同步至各节点,或通过反向代理统一指向静态资源服务器
配置 location 规则精准匹配
在 server 块中,用 location 指令按路径前缀或文件后缀匹配静态请求,再指定 root 或 alias 路径:
- 用
root:路径拼接为root + URI,适合统一根目录管理
例如:location /static/ { root /data; }→ 请求/static/js/app.js对应文件/data/static/js/app.js - 用
alias:直接替换匹配部分,适合映射到子目录
例如:location /js/ { alias /data/static/js/; }→ 请求/js/main.js对应/data/static/js/main.js - 常用后缀匹配:
location ~* \.(css|js|png|jpg|gif|woff2|ttf|svg)$,配合root或alias统一处理
启用性能与缓存优化
静态资源一旦部署,变动频率低,应充分利用浏览器缓存和内核零拷贝机制:
- 开启
sendfile on:跳过用户态复制,由内核直接传输文件 - 设置强缓存:
expires 1y;+add_header Cache-Control "public, immutable"; - 启用 gzip 压缩文本类资源:
gzip on;并指定gzip_types text/css application/javascript image/svg+xml; - 禁用日志记录高频静态请求:
access_log off;放在对应location块内
安全与健壮性补充
防止资源被滥用或误暴露:
- 禁止访问隐藏文件:
location ~ /\. { deny all; } - 限制敏感路径(如
.git、config):location ~ ^/(.git|config|logs)/ { deny all; } - 跨域字体需加头:
add_header Access-Control-Allow-Origin "*";(仅限字体.woff2、.ttf等) - 验证配置并重载:
nginx -t && nginx -s reload,再用 curl 或浏览器检查响应头与状态码











