CONCEPT
反向代理
核心定义
反向代理是站在服务器侧的请求转发中间人,属于常见的服务端架构模式。用户访问服务时不会直接连接真实业务服务器,所有请求首先发送至反向代理服务器,由代理服务器转发至后端匹配的真实服务器,待真实服务器处理完成后,再由代理服务器将结果回传给用户。整个过程用户完全无感知真实服务器的数量、IP地址、部署位置等信息,全程仅与反向代理服务器交互。
通俗类比
可以用饭店场景直观理解反向代理的角色:
- 反向代理 = 饭店服务员
- 真实业务服务器 = 饭店后厨 用户到店消费不会直接对接后厨,仅需向服务员点餐,服务员将订单传递给后厨制作,再将做好的餐品送到用户手中,用户全程不需要了解后厨的人员配置、具体位置等信息。
与正向代理的核心区别
正向代理和反向代理是最容易混淆的两类代理模式,核心差异如下:
| 代理类型 | 部署位置 | 核心作用 | 典型场景 |
|---|---|---|---|
| 正向代理 | 用户侧 | 帮助用户访问外部资源 | 科学上网、公司内网代理访问公网 |
| 反向代理 | 服务器侧 | 帮助服务器接收处理用户请求 | 网站统一入口、负载均衡 |
一句话区分:正向代理是「用户找代理帮自己出去访问」,反向代理是「服务方找代理帮自己接待用户」。
核心作用
反向代理是现代互联网网站架构的必备组件,核心价值包括:
- 安全防护:隐藏真实服务器的公网IP,避免服务器直接暴露在公网中,降低被攻击的风险
- 负载均衡:按照预设规则将用户流量分发至多台后端业务服务器,提升服务整体并发承载能力
- 访问加速:缓存静态资源(图片、JS、CSS、静态HTML等),用户请求静态资源时无需转发到后端服务器,直接由代理返回,大幅降低响应时延
- 统一运维:集中配置HTTPS证书、流量限流、WAF防火墙、黑白名单等通用能力,无需每台后端服务器单独配置
- 端口复用:支持多个域名对应的不同站点,共用同一台服务器的80/443端口,降低公网IP资源消耗
主流实现
目前最常用的反向代理实现软件为Nginx,它是一款高性能轻量级的Web服务器兼反向代理服务器,具备超高并发承载能力、内存占用低、运行稳定、配置简单的优势,几乎被所有互联网公司采用作为反向代理组件。
基于Nginx的典型网站访问流程如下:
- 用户浏览器发起对
www.example.com的访问,请求首先到达Nginx反向代理服务器 - Nginx判断请求类型:
- 若为静态资源请求,直接返回本地缓存的静态文件
- 若为动态接口/页面请求,转发至后端Tomcat/Java/Node.js等业务服务器处理
- 业务服务器处理完成后将结果返回给Nginx
- Nginx将最终结果回传给用户,用户全程仅感知到Nginx的存在
相关条目
- Nginx
- 正向代理
- 负载均衡
- 反向代理和Nginx通俗解释
- HTTPS配置