最有效提升并发能力的方式是让nginx处理静态资源、后端专注动态请求;通过后缀正则或路径前缀精准分流,用alias正确映射静态路径,动态请求统一proxy_pass兜底并隔离敏感接口,再结合强缓存与gzip压缩优化性能。

直接让 Nginx 处理静态资源、后端应用(如 Tomcat、Node.js 或 Python 服务)专注响应动态请求,是提升并发能力最有效的方式。核心不是加机器,而是把 I/O 密集型的静态文件读取从后端剥离,由更轻量、高并发的 Nginx 承担。
按文件类型精准分流静态请求
用正则匹配常见后缀,Nginx 可毫秒级判断并直接返回文件,不走后端:
- 在
server块中添加 location 规则:location ~* \.(css|js|png|jpg|gif|woff2|svg|ttf|eot)$ {<br> root /var/www/static;<br> expires 30d;<br> add_header Cache-Control "public, immutable";<br>} -
~*表示不区分大小写,避免因.JPG或.CSS失效 - 切勿把
.html加入此规则——除非是纯静态页;否则会拦截本该由后端渲染的页面
用路径前缀集中管理静态资源
比后缀匹配更清晰、更易维护,尤其适合前端打包后资源统一放在 /static/ 或 /assets/ 下的项目:
- 配置示例:
location /static/ {<br> alias /data/webapp/static/;<br> expires max;<br> gzip on;<br>} - 必须用
alias而非root:因为alias会把/static/css/app.css映射到/data/webapp/static/css/app.css;root则会拼成/data/webapp/static/static/css/app.css,导致 404 - 确保前端代码中引用路径与 Nginx 配置一致,例如:
<link href="/static/css/main.css">
动态请求明确兜底并隔离敏感路径
所有未被静态规则捕获的请求,默认交给后端,但必须防止误命中或路径污染:
- 推荐通配写法:
location / {<br> proxy_pass http://127.0.0.1:8000;<br> proxy_set_header Host $host;<br> proxy_set_header X-Real-IP $remote_addr;<br> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br>} - 不要在
location /中混用root或index,否则可能返回 Nginx 默认页而非转发 - 对登录、支付等敏感接口显式排除,例如:
location /api/login {<br> proxy_pass http://127.0.0.1:8000;<br> add_header Cache-Control "no-store, no-cache";<br>}
启用缓存与压缩进一步释放并发压力
动静分离只是起点,真正放大性能的是后续两层优化:
-
强缓存策略:对带哈希值的资源(如
main.a1b2c3.js)设expires max,浏览器永久缓存;对无版本号资源设expires 1h,避免更新不生效 -
Gzip 压缩:在
http块启用:gzip on;<br>gzip_types text/plain text/css application/javascript image/svg+xml;
-
避免代理敏感接口时缓存:用
add_header Cache-Control "no-store"显式关闭,防止登录态或支付结果被缓存











