Nginx动静分离技术是大型架构核心,下面我详解Nginx动静分离技术@mikechen
Nginx动静分离
所谓“动静分类”,是指将网站中的请求按资源类型划分为两类:静态请求和动态请求。

静态请求通常包括图片、CSS、JavaScript、字体文件、视频等内容,这些资源一经生成后不会频繁变化。
动态请求则通常由后端应用程序处理,例如 PHP、Java、Python、Node.js 等生成的页面内容或接口数据。
Nginx 的核心价值在于,它可以高效处理静态资源请求,并将动态请求转发给后端应用服务器。
这样做的好处在于:静态资源由 Nginx 直接响应,避免后端应用重复读取文件或生成内容。
动态请求则交给专门的应用服务处理,职责清晰,资源利用更合理。
Nginx动静分离原理
Nginx 通过 location 配置匹配 URL 规则:匹配静态路径 → 直接读取本地磁盘或内存缓存返回(root / alias + sendfile)。
匹配动态路径 → 使用 proxy_pass / fastcgi_pass 转发给后端。

server {
listen 80;
server_name example.com;
location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
root /usr/share/nginx/html;
expires 30d;
access_log off;
}
location /api/ {
proxy_pass http://backend_cluster;
}
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
}
接收客户端请求:用户访问某个 URL 后,请求首先到达 Nginx。
根据请求路径或后缀判断类型,Nginx 通过配置规则识别该请求是静态资源还是动态接口。
例如:
.jpg、.png、.css、.js 归为静态资源;
/api/、.php、.do 等路径归为动态请求。
这种模式的本质是“前端统一入口,后端按需分流”。
Nginx 既充当流量分发器,也充当静态资源服务层。
Nginx动静分离案例
大型互联网公司:真正的架构:

客户端
↓ (DNS / CDN)
Nginx (负载均衡 + 动静分离)
├── 静态请求 → /static/、/assets/、/img/ 等 → 本地磁盘 / NFS / OSS
└── 动态请求 → /api/、/*.php、/*.jsp 等 → proxy_pass → 后端集群
↓
Tomcat / PHP-FPM / Node / Go / Python 等
↓
MySQL / Redis / MQ
前端 CDN 缓存静态资源 → 回源到 Nginx 静态目录。
Nginx 层做页面缓存(proxy_cache)。
静态资源独立部署到对象存储(阿里 OSS、AWS S3)+ CDN。
多级 Nginx:边缘 Nginx(动静分离) + 内部 Nginx(服务治理)。