Nginx是大型架构核心,下面我详解Nginx动静分离@mikechen
Nginx 动静分离
Nginx 动静分离:是 Nginx 最经典的高性能优化手段之一。

它将动态请求,比如:需要后端应用服务器计算、查询数据库的请求,如 .php、.jsp、.do 等。
和静态请求,如: HTML、CSS、JS、图片、视频等分开处理,由 Nginx 直接处理静态资源。
可以,大幅减轻后端服务器(如 Tomcat、PHP-FPM、Node.js)的压力,从而提升整体吞吐量和响应速度。
Nginx 动静分离原理
动静分离,并不是简单把“静态页面”和“动态页面”分开放,而是按请求类型来分流处理。
静态文件占网站流量 70%~90%,Nginx 处理静态比后端应用服务器快 10 倍以上。
减少后端服务器的并发连接数和 CPU 负载。
支持 expires 浏览器缓存、gzip 压缩,进一步降低带宽和响应时间。

Nginx 通常通过: location 规则识别静态资源后缀或路径。
命中后直接从本地文件系统、缓存或独立静态资源服务器返回。
未命中的请求则反向代理到 Tomcat、PHP-FPM、Node.js 等后端。
这种设计的核心价值有三点:
一:是让 Nginx 处理它最擅长的高并发静态文件分发;
二:是让后端专注业务逻辑;
三:是减少后端的无效请求和连接占用。
Nginx 动静分离架构
典型架构有两种:
单 Nginx 分流架构:同一个 Nginx 同时负责静态资源和动态转发,静态文件放在本机目录,动态请求转发到后端应用。
独立静态资源架构:静态资源单独放在专门的静态服务器或 CDN 上。
Nginx 只做统一入口和动态转发,这是更常见也更推荐的方式。

http {
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
server {
listen 80;
server_name example.com;
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
root /var/www/static;
expires max;
proxy_cache my_cache; # Nginx 本地缓存静态资源
proxy_cache_valid 200 302 1h;
}
location / {
proxy_pass http://backend;
limit_req zone=one burst=20 nodelay; # 限流示例
}
}
}
动静分离是 Nginx 从“能用”到“高性能”的关键一步。
通过合理的 location 规则 + expires + proxy_cache,你可以轻松把后端压力降低 70% 以上。