动静分离最全详解(图文全面总结)

动静分离是大型架构的必备技能,下面我重点详解动静分离@mikechen

动静分离

动静分离:指的是动态请求、和静态请求的分离处理。

如下图所示:

动静分离最全详解(图文全面总结)-mikechen

比如:将网站的静态资源(如 HTML、CSS、JavaScript、图片…等)。

和动态资源(如 PHP、JSP、Python 脚本…等)分开处理。

由不同的服务器或服务进行响应,从而提高网站的整体性能和可伸缩性。

Nginx动静分离原理

Nginx动静分离原理,主要依赖 Nginx 的 location 匹配机制。

静态资源路径(如 /static//images/)直接映射到本地目录。

其他请求则通过 proxy_pass 转发给后端动态服务器。

动静分离最全详解(图文全面总结)-mikechen

如下所示:

server {
    listen 80;
    server_name example.com;

    # 静态资源处理
    location ~* \.(jpg|jpeg|gif|png|css|js|ico)$ {
        # 设置静态文件根目录
        root /var/www/static;
        # 开启缓存,有效期为30天
        expires 30d;
    }

    # 动态资源处理
    location / {
        # 将所有非静态资源的请求代理到后端服务器
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Nginx 会根据 URL 的路径或文件扩展名,匹配相应的 location 块。

如果 URL 匹配到静态资源的 location,Nginx 会直接在本地文件系统中查找并返回文件给用户。

如果 URL 匹配到动态资源的 location,Nginx 会将请求 反向代理 到后端应用服务器(如 PHP-FPM 或 Tomcat)。

这种方式通常用于大型网站,将静态资源部署在专门的静态资源服务器上,与处理动态内容的服务器完全分开。

评论交流
    说说你的看法