Nginx反向代理架构,是现代大型架构中的关键组成,下面我重点详解Nginx反向代理架构@mikechen
Nginx反向代理
Nginx反向代理(Reverse Proxy),它接受客户端的请求后,将请求转发给后端一个或多个服务器处理。
如下图所示:
与正向代理相对,反向代理隐藏了后端服务器的真实信息,客户端无需感知后端的具体实现。
Nginx反向代理不仅实现了请求的转发,还带来了负载分担、缓存优化、安全防护等多重功能。
比如:
- 负载均衡:将用户请求智能分配给多个后端服务器,有效提升系统的并发处理能力。
- 安全隔离:隐藏后端服务器IP,防止直接攻击,提高系统安全性。
- 缓存加速:利用代理缓存机制,减少与后端服务器的交互次数,加快响应速度。
- 跨域资源共享:处理多个域名请求,通过统一入口简化客户端访问流程。
- SSL终端:代理服务器可承担HTTPS解密任务,减轻后端服务器压力。
Nginx反向代理架构
Nginx反向代理架构,通过在客户端和后端服务器之间建立中间层,实现请求转发、负载均衡、缓存加速和安全防护等功能。
Nginx反向代理架构,如下图所示:
+------------+ +------------+ +------------+ | Client | ----> | Nginx | ----> | Backend 1 | +------------+ |(Reverse | +------------+ | Proxy & LB)| +------------+ | | | +------------+ | | +--------------> +------------+ | Backend 2 | +------------+
主要包含:
客户端(Client):向服务发起HTTP/HTTPS请求。
Nginx服务器:充当反向代理和负载均衡节点,接收请求,进行转发和过滤。
后端服务器(Backend):实际处理业务逻辑和数据存储的应用服务器。
请求流程:
-
客户端发起请求:浏览器向域名(如
mikechen.cc
)发起HTTP/HTTPS请求。 -
DNS解析:域名解析到Nginx服务器的公网IP地址。
-
Nginx接收请求:Nginx作为反向代理服务器,监听80或443端口,接收客户端请求。
-
请求转发:根据配置,Nginx将请求转发到后端一台或多台服务器(Web服务器、应用服务器等)。
-
后端服务器处理请求:后端服务器处理请求并生成响应。
-
响应返回Nginx:后端服务器将响应返回给Nginx。
-
Nginx响应客户端:Nginx将后端响应返回给客户端,客户端无感知后端服务器的实际地址。
下面给出一个基本的反向代理配置示例:
http { upstream backend_servers { server backend1.example.com weight=3; server backend2.example.com; } server { listen 80; server_name www.example.com; location / { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
说明:
upstream
定义了名为backend_servers
的后端服务器池,其中backend1
权重为3,表明其负载较重。server
模块配置监听端口及域名。proxy_pass
指令实现反向代理,将请求转发到负载均衡池。- 设置请求头保证后端正确获取客户端的真实IP和请求信息。
总之,Nginx反向代理架构是现代Web架构中常见的关键组成部分。
它位于客户端和后端服务器之间,负责接收客户端请求并转发到后端服务器,同时将后端响应返回给客户端。
mikechen
mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!

后台回复【架构】即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》