Nginx动静分离架构详解(图文全面总结)

Nginx动静分离架构详解(图文全面总结)

精选文章moguli202025-05-11 18:06:354A+A-

Nginx 动静分离是一种常见性能优化技术,Nginx动静分离架构可以更好的提升性能@mikechen

作者:mikechen

文章来源:mikechen.cc

Nginx动静分离

动静分离是一种优化应用性能、和可伸缩性的架构策略。

Nginx动静分离,核心思想是将 Web 应用中的动态资源、和静态资源分开部署和管理。

并通过 Web 服务器(通常是 Nginx)进行智能的请求分发,如下图所示:

在动静分离架构中,Nginx 作为前置的 反向代理服务器 + 静态资源服务器,具有如下职责:

拦截静态资源请求,直接读取本地文件并响应(高性能、无 I/O 等待);

转发动态请求 到后端应用服务器(如 Tomcat、PHP-FPM、Node.js)处理业务逻辑。

通过动静分离,我们可以将不同类型的请求交给最擅长处理它们的服务器,从而提高整体的效率和可维护性。


Nginx动静分离架构

整体架构,如下图所示:

对于静态资源请求,可以配置 Nginx 直接从本地文件系统(Nginx 服务器所在的磁盘),读取并返回给客户端。

也可以配置 Nginx 将请求,反向代理到专门的静态资源服务器(例如另一台 Nginx 服务器)、或内容分发网络 (CDN)。

对于动态资源请求,Nginx 将请求反向代理到后端的动态应用服务器集群(例如运行 PHP-FPM、Tomcat…等的服务器)。

            ┌────────────┐            │   客户端    │            └────┬───────┘                 │           ┌─────▼─────┐           │   Nginx   │           └────┬──────┘        ┌───────┼────────┐        │                │┌───────▼──────┐ ┌──────▼──────┐│ 静态资源服务器 │ │ 动态应用服务 ││  (如OSS/CDN)  │ │ (如Tomcat) │└──────────────┘ └─────────────┘

Nginx 动静分离核心就三步:

收请求: Nginx 接收用户请求;

分类型: Nginx 根据 URI 判断是静态资源(如图片、CSS、JS)还是动态请求(如 PHP 页面)。

导向处理,静态资源,Nginx 自己处理(读取本地文件)或转发给专门的静态资源服务器/CDN。

动态请求, Nginx 转发给后端的应用服务器(如 Tomcat。。。等等)。

整体配置,如下:

server {    listen 80;    server_name www.example.com;     # 静态资源处理    location ~* \.(jpg|jpeg|png|gif|css|js|ico|html|woff|ttf)$ {        root /var/www/static;        expires 7d;    }     # 动态请求代理后端    location / {        proxy_pass http://127.0.0.1:8080;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;    }}

通常,对于大型高并发的 Web 应用,结合使用 CDN 和专门的静态资源服务器是更优的选择。

本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。

点击这里复制本文地址 以上内容由莫古技术网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

莫古技术网 © All Rights Reserved.  滇ICP备2024046894号-2