最有效提升响应速度的手段是Nginx处理静态资源、后端处理动态请求;需按文件类型或路径前缀精准分流,配置合理缓存与压缩,并确保动态请求兜底代理且隔离敏感接口。

直接让 Nginx 处理静态资源,把动态请求交给后端应用服务器,这是提升响应速度最有效、最常用的手段。关键不在“能不能做”,而在于规则是否清晰、路径是否合理、缓存是否到位。
按文件类型精准分流
用正则匹配常见静态后缀是最直观的方式,Nginx 能在毫秒内完成判断并直发文件:
- 在 server 块中添加 location 块:
location ~* \.(css|js|png|jpg|gif|woff2|svg)$ {
root /var/www/static;
expires 30d;
add_header Cache-Control "public, immutable";
} - 注意 ~* 表示不区分大小写匹配,避免因 .JPG 或 .Css 导致命中失败
- 避免把 .html 写进这个规则——除非是纯静态页;否则可能拦截本该由后端生成的页面
按路径前缀集中管理静态资源
当项目约定静态资源统一放在 /static/ 或 /assets/ 下时,用路径前缀更清晰、更易维护:
- 配置示例:
location /static/ {
alias /data/webapp/static/;
expires max;
gzip on;
} - 用 alias 而非 root:因为
alias /data/webapp/static/;会把/static/css/app.css映射到/data/webapp/static/css/app.css;而root会拼接完整路径,容易出错 - 确保后端代码中引用的静态路径与 Nginx 配置一致,比如
<link href="/static/css/main.css">
动态请求必须明确兜底且隔离
所有未被静态规则捕获的请求,默认应交由后端处理,但需防止误代理或路径污染:
- 推荐写法:
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
} - 不要在
location /中混用root或index,否则可能返回 Nginx 默认页而非转发 - 如需排除某类路径(如
/api或/admin),可提前定义独立 location 块,优先级高于通配
别忽略缓存与压缩这两个加速器
动静分离只是第一步,真正拉开速度差距的是后续优化:
-
强缓存策略:对带哈希值的资源(如
main.a1b2c3.js)设expires max;,浏览器永久缓存;对无版本号资源设expires 1h;防止更新不生效 -
Gzip/Brotli 压缩:在 http 块启用:
gzip on;
gzip_types text/plain text/css application/javascript image/svg+xml; -
避免缓存敏感接口:对登录、支付等动态路径,显式关闭缓存:
location /login {
proxy_pass http://backend;
add_header Cache-Control "no-store, no-cache, must-revalidate";
}


















