Nginx动静分离技术详解:提升10倍性能关键!

Nginx动静分离技术是大型架构核心,下面我详解Nginx动静分离技术@mikechen

Nginx动静分离

所谓“动静分类”,是指将网站中的请求按资源类型划分为两类:静态请求和动态请求。

Nginx动静分离技术详解:提升10倍性能关键!-mikechen

静态请求通常包括图片、CSS、JavaScript、字体文件、视频等内容,这些资源一经生成后不会频繁变化。

动态请求则通常由后端应用程序处理,例如 PHP、Java、Python、Node.js 等生成的页面内容或接口数据。

Nginx 的核心价值在于,它可以高效处理静态资源请求,并将动态请求转发给后端应用服务器。

这样做的好处在于:静态资源由 Nginx 直接响应,避免后端应用重复读取文件或生成内容。

动态请求则交给专门的应用服务处理,职责清晰,资源利用更合理。

 

Nginx动静分离原理

Nginx 通过 location 配置匹配 URL 规则:匹配静态路径 → 直接读取本地磁盘或内存缓存返回(root / alias + sendfile)。

匹配动态路径 → 使用 proxy_pass / fastcgi_pass 转发给后端。

Nginx动静分离技术详解:提升10倍性能关键!-mikechen

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动静分离案例

大型互联网公司:真正的架构:

Nginx动静分离技术详解:提升10倍性能关键!-mikechen

客户端
   ↓ (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(服务治理)。

评论交流
    说说你的看法