Nginx动静分离架构(性能提升10倍关键)

Nginx是大型架构核心,下面重点详解Nginx动静分离架构@mikechen

Nginx动静分离

Nginx 动静分离(Dynamic-Static Separation),是一种 Web 架构优化策略。

将网站资源分为静态资源,如图片、CSS、JS、HTML 等文件,这些内容不依赖用户交互或实时数据。

和动态资源,如 API 接口、用户个性化页面,由后端应用服务器如 Tomcat、Spring Boot 等生成。

Nginx动静分离架构(性能提升10倍关键)

其核心目的是利用 Nginx 的高性能静态文件处理能力,卸载后端服务器的静态请求负担,从而显著提升整体系统性能。

 

Nginx动静分类架构

Nginx 动静分类架构是将静态和动态资源按路径、类型或业务逻辑分类。

通过 Nginx 的 location 模块路由,实现高效分离。

整体架构呈“前端 Nginx + 后端应用服务器”的分层设计,支持负载均衡和缓存,进一步放大性能收益。

Nginx动静分离架构(性能提升10倍关键)

用户请求 → Nginx (listen 80)
          ↓
     [分类路由]
          ↓
  静态? → 是 → 本地/缓存/CDN 返回 (e.g., /img/logo.png)
          ↓ 否
  动态? → 代理 upstream (e.g., /api/user → Tomcat:8080)
          ↓
     Tomcat 生成响应 → Nginx 返回

前端层(Nginx):作为反向代理和静态服务器,监听 80/443 端口。

接收所有请求后,根据规则分类。

静态资源分类:匹配文件扩展名(如 .jpg、.css)或路径前缀(如 /static/),直接从本地磁盘或缓存返回。

无需后端介入,响应速度 <10ms。

动态资源分类:匹配 API 路径(如 /api/)或动态页面(如 .jsp),代理到后端 upstream 集群。

后端层(应用服务器集群):如多台 Tomcat(端口 8080),专注 JSP/PHP 等动态生成。

Nginx 通过 upstream 模块实现轮询/权重负载均衡。

Nginx动静分离架构(性能提升10倍关键)

扩展层:缓存层:Nginx proxy_cache 缓存动态响应,命中率可达 90%。

CDN 层:静态资源外置到 CDN,Nginx 代理 CDN URL,减少源站压力。

数据库/缓存:后端连接 Redis/MySQL,仅处理个性化数据。

 

优化要点

Nginx动静分离架构(性能提升10倍关键)

缓存优化:proxy_cache 对动态 API 缓存,命中率高时后端 QPS 降 80%。

压缩优化:Gzip 针对静态文件,传输大小减半,适合带宽敏感场景。

负载均衡:upstream 支持 IP_HASH(session 粘性),keepalive 复用连接,提升 20% 吞吐。

安全/性能:limit_req 防刷接口;access_log off 静态路径减日志开销。

监控建议:集成 Prometheus + Grafana,监控 QPS、缓存命中率。测试工具:ab 或 wrk 模拟并发。

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧