大家好,我是mikechen。
Nginx 动静分离是一种常见的 Web 服务优化技术,Nginx动静分离可以更好的提升性能@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
Nginx动静分离
动静分离(Dynamic & Static Separation),是指将 动态请求(如PHP、Java、Python….等后端处理)和 静态资源(如HTML、CSS、JS、图片、视频等)分开处理。
通过这种方式,可以极大的提高性能,静态资源由Nginx直接返回,减少后端服务器压力。
还可以提升并发能力,Nginx处理静态请求效率远高于后端应用服务器。
Nginx动静分离架构
整体架构,如下图所示:
工作流程,如下:
首先,客户端发起请求。
比如:访问 example.com/index.html 或 example.com/api/data)。
其次,分发请求。
Nginx 根据请求类型分发:静态请求(如 .html, .jpg)、动态请求(如 .php, .java)。
静态请求
静态请求(如 .html, .jpg),直接从本地文件系统读取。
配置如下:
server { listen 80; server_name example.com; # 静态资源路径匹配 location ~* \.(html|css|js|jpg|png|gif|ico|mp4)$ { root /data/static; # 静态资源存放目录 expires 30d; # 缓存30天 access_log off; # 可选:关闭日志减少IO } }
动态请求
动态请求(如 .php, .java)转发给后端服务器。
配置如下;
/api/ 开头的请求会被转发到后端(如Tomcat…等等)。
proxy_set_header :确保后端获取真实客户端IP。
整体配置,如下:
除此之外,结合 Nginx缓存 + CDN + 负载均衡,可大幅提升网站性能!
以上
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。