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

createh511小时前技术教程5

Nginx 动静分离是一种常见性能优化技术,Nginx动静分离架构可以更好的提升性能@mikechen

作者:mikechen

文章来源:mikechen.cc

Nginx动静分离

动静分离是一种优化应用性能、和可伸缩性的架构策略。

Nginx动静分离,核心思想是将 Web 应用中的动态资源、和静态资源分开部署和管理。

并通过 Web 服务器(通常是 Nginx)进行智能的请求分发,如下图所示:

在动静分离架构中,Nginx 作为前置的 反向代理服务器 + 静态资源服务器,具有如下职责:

拦截静态资源请求,直接读取本地文件并响应(高性能、无 I/O 等待);

转发动态请求 到后端应用服务器(如 Tomcat、PHP-FPM、Node.js)处理业务逻辑。

通过动静分离,我们可以将不同类型的请求交给最擅长处理它们的服务器,从而提高整体的效率和可维护性。


Nginx动静分离架构

整体架构,如下图所示:

对于静态资源请求,可以配置 Nginx 直接从本地文件系统(Nginx 服务器所在的磁盘),读取并返回给客户端。

也可以配置 Nginx 将请求,反向代理到专门的静态资源服务器(例如另一台 Nginx 服务器)、或内容分发网络 (CDN)。

对于动态资源请求,Nginx 将请求反向代理到后端的动态应用服务器集群(例如运行 PHP-FPM、Tomcat…等的服务器)。

            ┌────────────┐            │   客户端    │            └────┬───────┘                 │           ┌─────▼─────┐           │   Nginx   │           └────┬──────┘        ┌───────┼────────┐        │                │┌───────▼──────┐ ┌──────▼──────┐│ 静态资源服务器 │ │ 动态应用服务 ││  (如OSS/CDN)  │ │ (如Tomcat) │└──────────────┘ └─────────────┘

Nginx 动静分离核心就三步:

收请求: Nginx 接收用户请求;

分类型: Nginx 根据 URI 判断是静态资源(如图片、CSS、JS)还是动态请求(如 PHP 页面)。

导向处理,静态资源,Nginx 自己处理(读取本地文件)或转发给专门的静态资源服务器/CDN。

动态请求, Nginx 转发给后端的应用服务器(如 Tomcat。。。等等)。

整体配置,如下:

server {    listen 80;    server_name www.example.com;     # 静态资源处理    location ~* \.(jpg|jpeg|png|gif|css|js|ico|html|woff|ttf)$ {        root /var/www/static;        expires 7d;    }     # 动态请求代理后端    location / {        proxy_pass http://127.0.0.1:8080;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;    }}

通常,对于大型高并发的 Web 应用,结合使用 CDN 和专门的静态资源服务器是更优的选择。

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

相关文章

nodejs+express,搭配Nginx提高性能,以及为什么要使用Nginx?

nodejs是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动、非阻塞式I/O模型,让JavaScript 运行在服务端的开发平台,它让JavaScript成为与PHP...

NodeJsLinux安装NodeJs并配合Nginx实现反向代理

http://blog.csdn.net/diandianxiyu_geek/article/details/51539244推荐理由NodeJs是什么Node.js是一个Javascript运行环...

在nodejs中使用Redis缓存和查询数据及Session

在之前的这篇文章 在ExpressJS(NodeJS)中设置二级域名跨域共享Cookie中提及将Session存放到Mongodb中,其中有很多讲解的不是很详细。我们为什么要把Session存放到数据...

Nginx 常用配置清单

作者 | vishnu chilamakuru来源 | https://vishnu.hashnode.dev/nginx-cheatsheet?guid=none&deviceId=ca2...

带你一步步搭建一个 Node.js 服务器

爱学习的小伙伴们,Node.js 服务器有听说过没,是否觉得陌生?如此,就一起动手搭建一个吧。会的小伙伴可以略过哟~以下是搭建 Node.js 服务器的详细步骤:1. 安装 Node.js 和 npm...

在Node应用中实施Web认证的四大方法

本文翻译自RisingStack网站Gergely Nemeth撰写的《Web Authentication Methods Explained》一文,感谢景庄对该文章的翻译。安全问题正成为Web应用...