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

Nginx动静分离

Nginx动静分离 ,是优化 Web 性能的常用且高效的架构模式。

它的核心思想是:将 动态资源和静态资源分开。

Nginx动静分离架构详解(性能提升3倍的关键)-mikechen

比如: JSP, PHP, ASP 等需要后端应用服务器处理的请求,和 静态资源分开。

比如: HTML, CSS, JavaScript 文件、图片、视频等不需要后端处理的资源,由不同的服务器或不同的处理机制来负责。

 

Nginx动静分类架构

Nginx动静分离架构详解(性能提升3倍的关键)-mikechen

   ┌────────────┐
   │  用户浏览器 │
   └──────┬─────┘
          │
          ▼
    ┌──────────────┐
    │     Nginx     │
    │ (反向代理层)  │
    ├──────────────┤
    │静态资源目录   │→ 直接返回文件 (HTML/CSS/JS/IMG)
    │动态代理模块   │→ 转发到后端应用 (Tomcat/Spring)
    └──────────────┘
          │
┌────────────────┐
│ 后端应用服务器 │
└────────────────┘

静态资源统一由前端服务器处理:HTML、CSS、JavaScript、图片、视频等静态资源。

静态资源, 使用独立的域名(如 static.yourdomain.com),指向专门的 Nginx 静态服务器集群。

动态资源 使用主域名(如 www.yourdomain.com),指向 Nginx 反向代理集群,再由它们转发给应用服务器。

页面中的静态资源链接,全部使用 static.yourdomain.com 域名。

Nginx动静分离架构详解(性能提升3倍的关键)-mikechen

动态请求转发给应用服务器:如 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 通过代理/反向代理,将动态请求转发到后端应用集群。

评论交流
    说说你的看法