反向代理与正向代理的区别

发布于 2026-02-07 | 作者: FreeProxy Team

正向代理:代表客户端出击

正向代理与反向代理虽然都叫"代理",但服务的对象完全相反,这是理解两者的关键。正向代理部署在客户端一侧,由客户端主动配置,代表内网用户去访问外部服务:企业出口的 Squid 缓存代理、个人翻墙用的自建代理、爬虫使用的 IP 轮换代理,都属于正向代理。它的特征是目标服务器不知道最终用户是谁,只看到代理在访问;而客户端清楚地知道自己在用代理。

反向代理:代表服务端接客

反向代理部署在服务端入口,用户通常毫无察觉。网站把真实服务器藏在 Nginx、HAProxy 或云负载均衡器后面,用户请求先到反向代理,再由它分发给后端的某一台上游服务器。反向代理承担的典型职责包括负载均衡、TLS 终结、静态资源直出、请求限速,以及把应用服务器与公网隔离以缩小攻击面。此时不知道真相的一方换成了客户端:用户以为自己在和网站本体通信,实际对接的是代理。

核心差异对比表

对比维度 正向代理 反向代理
服务对象 客户端(用户侧) 服务端(网站侧)
部署位置 内网出口或用户终端附近 机房入口、真实服务器之前
谁感知代理存在 客户端知道,服务端不清楚 服务端知道,客户端通常无感
典型用途 隐私保护、缓存加速、访问控制、IP 轮换 负载均衡、TLS 终结、安全防护、灰度发布
代表软件 Squid、3proxy、Shadowsocks 客户端链路 Nginx、HAProxy、Traefik、CDN 边缘节点

一个便于记忆的类比:正向代理是"替你去买东西的代购",反向代理是"替商家接待客人的前台"。CDN 本质上就是分布在全球的反向代理集群。

Nginx 反向代理最小配置

以下是一段可直接使用的 Nginx 反向代理配置,把进入 80 端口的请求转发给内网上游,并传递真实客户端 IP:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://192.168.1.10:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

其中 proxy_set_header 三行是把原始请求信息透传给上游的关键,漏掉 X-Forwarded-For 会导致后端日志里记录的全是代理内网 IP。写好后用 nginx -t 检查语法,再 nginx -s reload 平滑生效。

使用提醒

两种代理技术都应服务于正当用途:正向代理使用者需遵守目标网站条款与当地法规,不做违法访问;反向代理运维者应正确配置头部透传、访问日志与安全策略,履行数据保护义务。

Article ID: 12

(本文仅供技术交流,请遵守法律法规)

返回知识库
广告区域 (Ad Space)