我见过不少人学 Nginx,第一步就卡在“正向代理”和“反向代理”。
其实这两个概念不用背太复杂。
你只要问一句:
这个代理,是帮谁干活?
帮客户端访问外部资源,是正向代理。
帮后端服务接住外部请求,是反向代理。

正向代理:客户端侧的出口
正向代理像是客户端的出口。
请求过程是:
客户端 → 代理服务器 → 目标网站
客户端本来要访问目标网站,但它不直接访问,而是通过代理访问。
目标网站看到的是代理服务器。
这类场景很常见:
内网机器访问外网;
采集程序访问目标站;
接口调试时切换访问出口;
企业网关记录访问行为;
客户端隐藏真实来源。
我做采集任务时,会把正向代理理解成“出口管理”。比如同一批任务里,有的目标站失败率高,有的目标站响应慢,排查时就不能只看业务代码,还要看代理出口、目标站策略、请求频率这些因素。
如果这批任务接了青果这类隧道代理,重点也不是“品牌名字写在配置里”,而是要把出口、鉴权、失败重试、日志追踪这些细节处理清楚。
反向代理:服务端侧的入口
反向代理像是服务端的入口。
请求过程是:
用户 → Nginx → 后端服务
用户访问 Nginx,Nginx 再把请求转给后端服务。
用户不知道后面服务在哪里,也不关心后端是一个实例还是多个实例。
这类场景也很常见:
网站部署;
API 转发;
前后端分离;
多服务共用域名;
HTTPS 证书统一处理;
后端扩容;
静态资源缓存;
请求限流和日志记录。
大部分 Web 项目里说“Nginx 代理一下”,说的就是反向代理。
两者的本质区别
| 对比维度 | 正向代理 | 反向代理 |
|---|---|---|
| 面向对象 | 客户端 | 服务端 |
| 解决问题 | 客户端怎么出去 | 请求怎么进入后端 |
| 是否隐藏客户端 | 是 | 否 |
| 是否隐藏后端 | 否 | 是 |
| 谁来配置 | 客户端或网络侧 | 服务端部署侧 |
| 典型关键词 | 出口、访问外部资源、代理 IP | 入口、域名、后端服务、负载分发 |
正向代理和反向代理不是谁高级、谁低级,而是用途不同。
一个管出去,一个管进来。
反向代理配置怎么写
基础配置如下:
server {
listen 80;
server_name
location / {
proxy_pass http://127.0.0.1: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-Proto $scheme;
}
}
这段配置适合把域名请求转发到后端服务。
几个头字段很重要:
Host:把原始域名传给后端;
X-Real-IP:传递用户真实 IP;
X-Forwarded-For:记录经过的代理地址;
X-Forwarded-Proto:告诉后端原始协议。
如果你发现后端日志里全是 Nginx 的 IP,或者 HTTPS 页面跳回 HTTP,可以先检查这些头。
多后端服务怎么写
如果后端有多台机器,可以用 upstream:
upstream app_backend {
server 10.0.0.1:8080;
server 10.0.0.2:8080;
}
server {
listen 80;
server_name
location / {
proxy_pass http://app_backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这就是反向代理加多后端分发。
网站流量变大后,这类配置很常见。
正向代理配置能不能用 Nginx 写?
可以写简单 HTTP 示例:
server {
listen 8888;
resolver 8.8.8.8;
location / {
proxy_pass http://$http_host$request_uri;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
}
}
客户端把代理地址设为:
http://代理服务器IP:8888
然后通过它访问外部 HTTP 网站。
但我不会建议你看到这段配置就直接拿去做生产正向代理。
原因是 HTTPS 正向代理通常涉及 CONNECT 隧道,原生 Nginx 支持并不完整。如果还要做鉴权、出口池、访问控制、日志追踪,建议认真评估专门的代理服务,而不是硬靠 Nginx 凑。
怎么选?
如果你是在部署网站:
用户访问域名 → Nginx → 后端服务
选反向代理。
如果你是在做 API 入口:
外部请求 → Nginx → 内部接口
选反向代理。
如果你是在做采集任务:
采集程序 → 代理出口 → 目标站
这是正向代理思路。
如果你是在做公司统一外网访问:
员工终端 → 代理服务器 → 外部网站
也是正向代理。
最后说一句
Nginx 正向代理和反向代理的区别,不在“代理”这两个字,而在它站的位置。
站在客户端这边,替客户端访问外部资源,是正向代理。 站在服务端这边,替后端服务接收外部请求,是反向代理。
Nginx 的强项是反向代理。
正向代理不是不能做,但要看场景。简单 HTTP 可以演示,完整 HTTPS、鉴权、出口管理、日志追踪这些需求,就要谨慎选型。
别为了统一工具,把问题做复杂。先判断方向,再决定配置和工具。






































