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

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

经验文章nimo972025-06-15 19:36:014A+A-

关注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万字《阿里架构师进阶专题合集》里面。

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

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