Nginx动静分离原理详解(图文全面总结)

Nginx动静分离原理详解(图文全面总结)

经验文章nimo972025-06-16 23:03:124A+A-

动静分离在大型架构常用手段,也是大厂经常考察核心点,下面我重点详解Nginx动静分离原理@mikechen

作者:mikechen

文章来源:mikechen.cc

动静分离

动静分离,顾名思义,就是将网站或应用中动态内容 (Dynamic Content) 和 静态内容 (Static Content) 分开处理和部署的技术。

常见的静态内容,包含: HTML 文件、CSS 文件、JavaScript 文件、图片 (如 PNG, JPG, GIF)、视频、音频、字体文件等。

动态内容,指的的需要与数据库交互的内容。

比如:页面、用户登录后的个人中心、实时更新的数据接口…等。

动态内容,通常由后端编程语言(如 PHP, Python, Java…等)生成。

为什么要做动静分离?

进行动静分离的主要目的是为了提升网站或应用的性能、可维护性和可扩展性。

比如:静态资源分离,可以直接通过 Nginx 或 CDN 服务器提供。

这些服务器通常在处理静态文件方面进行了高度优化,例如:缓存机制…等,可以更快地响应用户的请求。

并且,前端开发人员可以专注于静态资源的优化、和部署。

后端开发人员可以专注于动态逻辑的开发和维护,职责更加清晰,降低了维护的复杂性。

Nginx动静分离原理

Nginx 实现动静分离的核心在于其强大的 location 模块、和相关的指令。

Nginx 实现动静分离,通过请求路由机制(location匹配),来判断请求属于哪种类型,并进行相应处理。

流程如下:

客户端请求 --> Nginx    |-- 请求动态内容,如 /index.php --> 反向代理到后端(FastCGI、Tomcat、Node.js等)   |   |-- 请求静态资源,如 /css/style.css --> Nginx 本地直接读取 /static/css/style.css

通过配置不同的 location 块,Nginx 可以根据请求的 URI (统一资源标识符,也就是网址) ,将请求分发到不同的处理方式或后端服务器。

比如:

server {    listen 80;    server_name www.example.com;     # 静态资源处理:如 /static/js/app.js    location ^~ /static/ {        root /usr/share/nginx/html/;        expires 30d;        access_log off;    }     # 后端接口请求转发:如 /api/user    location /api/ {        proxy_pass http://127.0.0.1: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;    }     # 默认请求(前端路由支持)    location / {        root /usr/share/nginx/html/;        index index.html;        try_files $uri $uri/ /index.html;    }}

^~ /static/:将 /static/ 前缀的请求直接映射到本地静态目录;

/api/:转发给 Java 后端(用于 REST 接口请求);

这样,通过将静态资源和动态内容分离处理,从而显著提升网站的性能。

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

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

尼墨宝库 © All Rights Reserved.  蜀ICP备2024111239号-7