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

createh52周前 (06-09)技术教程13

动静分离在大型架构常用手段,也是大厂经常考察核心点,下面我重点详解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万字《阿里架构师进阶专题合集》里面。

相关文章

如何理解Nginx和Tomcat?

Nginx和Tomcat是两种常用的Web服务器,它们都可以用来提供Web服务,但在一些方面有所不同。Nginx是一个高性能的反向代理服务器和Web服务器,它主要用来处理静态资源的请求,比如图片、样式...

Vue脚手架安装,初始化项目,打包并用Tomcat和Nginx部署

1.创建Vue脚手架# 1.在本地文件目录创建my-first-vue文件夹,安装vue-cli脚手架: npm install -g vue-cli 安装过程如下图所示:创建my-first-vue...

【Nginx】Nginx 4种常见配置实例

本文主要介绍nginx 4种常见的配置实例。Nginx实现反向代理;Nginx实现负载均衡;Nginx实现动静分离;Nginx实现高可用集群;Nginx 4种常见配置实例如下:一、Nginx反向代理配...

前端_react项目从windows部署到centos

前言:从工程角度来讲,本地开发完就要把项目部署到生产环境,此过程的快慢也直接影响着整体的效率。所以也有很多人做持续集成的工作,例如:CI/CD/一键部署。但对于个人开发者而言,如果能有工具支撑是最好的...

Linux环境通过Dockerfile创建Tomcat镜像

简介: Docker通过读取Dockerfile里面的内容可以自动创建镜像(image),Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系。Docker程序将读...

tomcat+Nginx负载均衡对session处理2

上一节,我们把session的原理分析了一下,对缓存机制做了一个解释,引入我们的缓存机制memcached,同时也提到了一套开源的memcached管理方案Memcached Session Mana...