Nginx动静分离详解(原理+架构+案例)

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

Nginx 动静分离

Nginx 动静分离:是 Nginx 最经典的高性能优化手段之一。

Nginx动静分离详解(原理+架构+案例)-mikechen

它将动态请求,比如:需要后端应用服务器计算、查询数据库的请求,如 .php、.jsp、.do 等。

和静态请求,如: HTML、CSS、JS、图片、视频等分开处理,由 Nginx 直接处理静态资源。

可以,大幅减轻后端服务器(如 Tomcat、PHP-FPM、Node.js)的压力,从而提升整体吞吐量和响应速度。

 

Nginx 动静分离原理

动静分离,并不是简单把“静态页面”和“动态页面”分开放,而是按请求类型来分流处理。

静态文件占网站流量 70%~90%,Nginx 处理静态比后端应用服务器快 10 倍以上。

减少后端服务器的并发连接数和 CPU 负载。

支持 expires 浏览器缓存、gzip 压缩,进一步降低带宽和响应时间。

Nginx动静分离详解(原理+架构+案例)-mikechen

Nginx 通常通过: location 规则识别静态资源后缀或路径。

命中后直接从本地文件系统、缓存或独立静态资源服务器返回。

未命中的请求则反向代理到 Tomcat、PHP-FPM、Node.js 等后端。

这种设计的核心价值有三点:

一:是让 Nginx 处理它最擅长的高并发静态文件分发;

二:是让后端专注业务逻辑;

三:是减少后端的无效请求和连接占用。

 

Nginx 动静分离架构

典型架构有两种:

单 Nginx 分流架构:同一个 Nginx 同时负责静态资源和动态转发,静态文件放在本机目录,动态请求转发到后端应用。

独立静态资源架构:静态资源单独放在专门的静态服务器或 CDN 上。

Nginx 只做统一入口和动态转发,这是更常见也更推荐的方式。

Nginx动静分离详解(原理+架构+案例)-mikechen

 

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% 以上。

评论交流
    说说你的看法