Nginx是大型架构核心,下面重点详解Nginx动静分离架构@mikechen
Nginx动静分离
Nginx动静分离 ,是优化 Web 性能的常用且高效的架构模式。
它的核心思想是:将 动态资源和静态资源分开。

比如: JSP, PHP, ASP 等需要后端应用服务器处理的请求,和 静态资源分开。
比如: HTML, CSS, JavaScript 文件、图片、视频等不需要后端处理的资源,由不同的服务器或不同的处理机制来负责。
Nginx动静分类架构

┌────────────┐
│ 用户浏览器 │
└──────┬─────┘
│
▼
┌──────────────┐
│ Nginx │
│ (反向代理层) │
├──────────────┤
│静态资源目录 │→ 直接返回文件 (HTML/CSS/JS/IMG)
│动态代理模块 │→ 转发到后端应用 (Tomcat/Spring)
└──────────────┘
│
┌────────────────┐
│ 后端应用服务器 │
└────────────────┘
静态资源统一由前端服务器处理:HTML、CSS、JavaScript、图片、视频等静态资源。
静态资源, 使用独立的域名(如 static.yourdomain.com),指向专门的 Nginx 静态服务器集群。
动态资源 使用主域名(如 www.yourdomain.com),指向 Nginx 反向代理集群,再由它们转发给应用服务器。
页面中的静态资源链接,全部使用 static.yourdomain.com 域名。

动态请求转发给应用服务器:如 Tomcat、Jetty、Express、Django 等处理动态请求。
server {
listen 80;
server_name yourdomain.com;
# 1. 静态资源处理
# 匹配所有以 .jpg, .css, .js 等结尾的请求
location ~* \.(gif|jpg|jpeg|png|css|js|ico|woff|woff2|ttf|eot|svg)$ {
root /data/www/static; # 静态文件存放的绝对路径
expires 30d; # 缓存 30 天
access_log off; # 静态请求可关闭日志,进一步提升性能
}
# 2. 动态资源处理
# 除上述静态后缀外的所有请求都转发给后端应用服务器
location / {
proxy_pass http://backend_server_cluster; # 转发到后端应用集群
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# ... 其他反向代理配置
}
}
Nginx 通过代理/反向代理,将动态请求转发到后端应用集群。