当前位置:首页 > 技术分析 > 正文内容

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

关注mikechen十余年BAT架构经验倾囊相授!

大家好,我是mikechen睿哥。


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

Nginx动静分离

动静分离,顾名思义,就是将网站的动态内容、和静态内容分开处理、和部署。

如下图所示:

静态内容:指不依赖后端程序处理、不经常变化的文件。

比如:HTML、CSS、JavaScript、图片(jpg、png等)、视频。。。等。

动态内容:需要后端应用程序(如PHP、Java、Python等)处理后生成的内容,如API接口、动态网页…等。

将静态资源的请求分发给专门的服务器或 Nginx 直接处理,可以释放后端应用服务器的资源,使其专注于处理动态逻辑。


Nginx动静分离原理

Nginx动静分离原理,如下图所示:

大致流程,如下:

首先,请求分类转发。

Nginx根据请求的URL路径或文件后缀名判断请求类型,静态资源请求直接由Nginx返回,动态资源请求通过反向代理转发到后端服务器。

其次,缓存机制。

Nginx可以缓存静态资源,减少对后端服务器的请求次数,提升响应速度。

然后,浏览器缓存控制。

通过设置Expires、Cache-Control等HTTP头,控制浏览器缓存,减少重复请求。

最后,资源专职处理。

Tomcat专注处理动态请求,Nginx专注处理静态资源,提高资源利用率和性能

http {    upstream backend_server {        server 127.0.0.1:8080;# 后端动态资源服务器地址和端口}     server {        listen 80;        server_name example.com; # 静态资源处理        location /static/{alias/usr/local/mystatic/;# 静态资源路径            autoindex on;# 可选,目录浏览            expires 30d;# 设置浏览器缓存30天} # 静态资源匹配文件扩展名        location ~* \.(jpg|jpeg|png|gif|css|js|ico|html)nbsp;{            root /usr/local/mystatic/;            expires 30d;} # 动态资源处理,转发给后端服务器        location /{            proxy_pass http://backend_server;            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 /static/ ,用于匹配静态资源请求,直接从本地静态目录返回。

动态请求,通过 proxy_pass 转发给后端应用服务器。

以上

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

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4604.html

标签: java nginx
分享给朋友:

“Nginx动静分离详解(图文全面总结)” 的相关文章

Ubuntu 24.10发行版登场:Linux 6.11内核、GNOME 47桌面环境

IT之家 10 月 11 日消息,Canonical 昨日发布新闻稿,正式推出代号为 Oracular Oriole 的 Ubuntu 24.10 发行版。新版在内核方面升级到最新 6.11 版本,并采用 GNOME 47 桌面环境。Ubuntu 24.10 发行版调整了内核策略,开始选择最新的上游...

2024前端面试真题之—VUE篇

添加图片注释,不超过 140 字(可选)1.vue的生命周期有哪些及每个生命周期做了什么? beforeCreate是new Vue()之后触发的第一个钩子,在当前阶段data、methods、computed以及watch上的数据和方法都不能被访问。 created在实例创建完成后发生,当前阶段已...

Vue3,父组件子组件传值,provide(提供)和inject(注入)传值

父组件向子组件传值父子组件传递数据时,通常使用的是props和emit,父向子传递使用props,子向父传递使用emit。子组件接收3种方式// 1、简单接收 props:["title","isShow"], // 2、接收的同时对数据类型进行限制 props:{...

理解virt、res、shr之间的关系(linux系统篇)

前言想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。...

壹啦罐罐 Android 手机里的 Xposed 都装了啥

这是少数派推出的系列专题,叫做「我的手机里都装了啥」。这个系列将邀请到不同的玩家,从他们各自的角度介绍手机中最爱的或是日常使用最频繁的 App。文章将以「每周一篇」的频率更新,内容范围会包括 iOS、Android 在内的各种平台和 App。本期继续歪楼,由少数派撰稿作者@壹啦罐罐介绍他正在使用的...

VUE-router

七.Vue-router1、什么是vue-routervue-router是vue.js官方路由管理器。vue的单页应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统页面切换是用超链接a标签进行切换。但vue里是用路由,因为我们用Vue做的都是单页应用,就相当于只有一个主的i...