SOURCE
反向代理和Nginx通俗解释 摘要
文档概览
本文避免使用晦涩技术术语,通过「饭店服务员」的生活化类比快速理解反向代理本质,通过表格直观对比正向代理与反向代理的核心差异,同时拆解了主流反向代理实现软件Nginx的定位、特性、用途,最后串联出完整的网站访问流程,帮助零基础读者快速理清两个核心概念的关联与区别。
关键事实
反向代理核心定义
反向代理是位于服务器侧的请求转发中间人,用户访问服务时不会直接连接真实业务服务器,全程无感知真实服务器的数量、IP、部署位置,所有请求都由反向代理中转。
正向代理与反向代理核心差异
二者的核心区别可以从三个维度区分:
- 站位:正向代理位于用户侧,反向代理位于服务器侧
- 作用:正向代理帮助用户访问外部资源,反向代理帮助服务器接收处理用户请求
- 典型场景:正向代理常见于科学上网、公司内网代理上网;反向代理常见于网站统一入口、负载均衡场景
| 代理类型 | 站位 | 核心作用 | 典型场景 |
|---|---|---|---|
| 正向代理 | 用户侧 | 帮用户访问外部资源 | 科学上网、公司内网代理上网 |
| 反向代理 | 服务器侧 | 帮服务器接收用户请求 | 网站统一入口、负载均衡 |
反向代理核心作用
反向代理共有5项核心价值:
- 隐藏真实服务器IP,避免服务器直接暴露在公网,提升安全性
- 实现负载均衡,将用户流量均匀分配给多台后端业务服务器,提升服务承载能力
- 静态资源缓存,将图片、JS、CSS等不常变更的静态资源缓存到代理服务器,加快用户访问速度
- 统一安全配置,可在代理层统一实现HTTPS加密、WAF防火墙、限流等安全策略
- 多站点复用端口,支持多个域名共用同一个服务器的80/443端口,降低服务器资源消耗
Nginx核心信息
- 核心定位:高性能轻量级Web服务器+反向代理服务器,是目前实现反向代理模式的主流开源软件
- 核心特性:支持超高并发连接、内存占用极低、配置逻辑简单、运行稳定性极强
- 典型用途:反向代理、负载均衡、静态资源服务、HTTPS证书部署、接口网关、限流、访问黑白名单配置
二者本质区别
反向代理是一种架构设计模式,而Nginx是实现该模式的最主流开源软件。
基于Nginx的反向代理网站访问全流程
用户访问网站的完整流程如下:
- 用户浏览器发起的请求首先到达作为反向代理的Nginx服务器
- Nginx判断请求类型:如果是图片、JS、CSS、静态HTML等静态资源,直接将本地存储的资源返回给用户
- 如果是接口、动态页面等动态请求,Nginx将请求转发给后端的Tomcat/Java/Node.js等业务服务器处理
- 后端业务服务器处理完成后将结果返回给Nginx
- Nginx将最终结果回传给用户,全程用户仅能感知到Nginx的存在,无法接触到真实业务服务器
重要细节
生活化类比理解反向代理
可以把反向代理类比为饭店的服务员:用户到饭店吃饭不需要直接对接后厨,只需要和服务员沟通,服务员将用户的点餐需求传递给后厨,再将后厨做好的菜传递给用户。其中服务员对应反向代理,后厨对应真实业务服务器,用户全程不知道后厨的位置、人数、分工。
一句话区分正向/反向代理
- 正向代理:用户找代理帮自己访问外部资源
- 反向代理:网站运营方找代理帮自己接待用户请求
Nginx的行业优势
相比传统的Web服务器Apache,Nginx的并发承载能力提升数倍,内存占用仅为Apache的几分之一,配置灵活度更高,目前几乎所有主流互联网公司都采用Nginx作为反向代理与Web服务组件。