2026 年再讲 Nginx 代理:正向代理和反向代理到底差在哪?

简介: Nginx中,“代理”分正向与反向:正向代理替客户端访问外网(需客户端配置),隐藏用户IP;反向代理替服务端接收请求(客户端无感),隐藏后端架构。二者立场、用途、配置主体截然不同,99%线上场景用的是反向代理。

前几天我帮一个朋友看 Nginx 配置。他把 proxy_pass 写好了,但问了我一句:

“我这个是不是正向代理?”

我看了一眼,其实是反向代理。

这类问题很常见。很多人一看到“代理”两个字,就默认是同一回事。但在 Nginx 里,正向代理和反向代理虽然都叫代理,站的位置完全不同。

我一般用一句话区分:

正向代理,是客户端找代理出去;反向代理,是服务端放代理在前面接请求。

正向代理:替客户端访问外部资源

正向代理站在客户端这一边。

请求关系大概是:

text复制

客户端 → 正向代理 → 目标服务器

客户端不直接访问目标网站,而是把请求交给代理服务器,由代理服务器替它访问目标网站。

目标服务器看到的,通常是代理服务器,而不是原始客户端。

典型场景包括:

  • 内网机器通过统一出口访问外网;
  • 开发环境临时调试外部接口;
  • 公司网关统一做访问审计;
  • 采集任务统一管理出口 IP;
  • 客户端不希望直接暴露真实来源。

这里的重点是:代理替客户端出去。

如果你需要在客户端、程序或系统网络里配置代理地址,那大概率就是正向代理。

反向代理:替后端服务接收外部请求

反向代理站在服务端这一边。

请求关系大概是:

text复制

用户 → Nginx → 后端服务

用户访问的是 Nginx 暴露出来的域名,真实后端服务藏在 Nginx 后面。

比如用户访问:

text复制

https://example.com/api/user

Nginx 实际可能转发到:

text复制

http://127.0.0.1:8080/user

用户不知道后面是什么服务、什么端口、几台机器。它只知道访问一个域名。

这就是反向代理的典型用途:

  • 网站统一入口;
  • API 请求转发;
  • HTTPS 证书统一管理;
  • 后端服务隐藏;
  • 多个服务共用一个域名;
  • 负载均衡;
  • 缓存、限流、压缩。

大多数线上网站用 Nginx,主要就是用它做反向代理。

一张表看懂区别

对比项 正向代理 反向代理
代理站在哪边 客户端一侧 服务端一侧
替谁工作 替客户端访问外部资源 替服务端接收请求
隐藏谁 隐藏客户端 隐藏真实后端
谁配置 客户端或客户端所在网络 服务端部署方
用户是否感知 通常需要配置代理 一般无感知
常见场景 统一出口、采集代理、访问外部资源 网站入口、API 转发、负载均衡
Nginx 是否擅长 能做简单场景 非常成熟

Nginx 反向代理配置示例

最常见的反向代理配置是这样:

nginx复制

server {
   
    listen 80;
    server_name example.com;

    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;
    }
}

这段配置表示:

用户访问 example.com,Nginx 接住请求,然后转发给本机 8080 端口的后端服务。

几个头字段也别省:

  • Host:把原始域名传给后端;
  • X-Real-IP:传递用户真实 IP;
  • X-Forwarded-For:记录请求经过的代理地址;
  • X-Forwarded-Proto:告诉后端原始请求是 HTTP 还是 HTTPS。

不少线上问题不是 proxy_pass 写错,而是这些头没传好。

Nginx 正向代理配置示例

Nginx 也可以做简单 HTTP 正向代理:

nginx复制

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;
    }
}

客户端把代理地址设置为:

text复制

http://代理服务器IP:8888

之后客户端访问外部 HTTP 网站,请求会先到 Nginx,再由 Nginx 去访问目标站点。

但这段配置更适合说明概念,不建议直接当完整生产方案。因为 HTTPS 正向代理通常需要 CONNECT 隧道,原生 Nginx 的 HTTP 模块并不完整支持。真要长期跑,通常会用专门的正向代理服务,或者确认 Nginx 已加载相关第三方模块。

最后说一句

判断正向代理和反向代理,不要只看有没有 proxy_pass。

你要看它替谁办事。

替客户端出去,是正向代理。
替服务端接请求,是反向代理。

做网站入口、API 转发、负载均衡,按反向代理理解。

做统一出口、采集代理、外部资源访问,按正向代理理解。

这个方向判断清楚,Nginx 配置就不容易跑偏。

相关文章
|
1月前
|
人工智能 编解码 自然语言处理
数字人视频运镜总翻车?Vera 1.1 复杂镜头运动技术难点全拆解
Vera 1.1 是星宇智算推出的图生视频模块,专攻复杂镜头运动难题。通过3D几何约束、运动解耦与分层时空注意力三大技术,将复合运镜合格率从62%提升至89%,支持最高6自由度精准控制,显著改善主体漂移、畸变、断裂等六大失效问题,广泛适配数字人、宣传片与虚拟漫游场景。
171 1
|
1月前
|
人工智能 编解码 自然语言处理
把 DeepSeek Harness 接入视频剪辑工作流:开源 Timeline Studio 插件的工程实践
开源插件 dsh-timeline-studio-plugin 将 DeepSeek Harness 接入 Timeline Studio,通过 7 个安全工具实现自然语言驱动的视频工程编辑:支持工程检查、语义预演(diff)、事务式修改(apply)与 MP4 渲染验证,严格限制文件访问边界,保障专业剪辑流程可靠可控。
|
数据安全/隐私保护 Windows
如何使用 SPICE client (virt-viewer) 来连接远程虚拟机桌面?
如何使用 SPICE client (virt-viewer) 来连接远程虚拟机桌面? 什么是SPICE? SPICE (Simple Protocol for Independent Computing Environments) 是一个用于虚拟化环境中的通讯协议。
6937 0
|
2月前
|
人工智能 前端开发 小程序
AI 编程工具排名 2026:7 款主流横评(国产 + 海外实测)
AI 编程工具有哪些?哪个 AI 写代码最强?2026 年 AI 编程工具排名横评:Cursor、Bolt.new、Lovable、v0、秒悟 Meoo、通义灵码。从场景适配度、价格、商用合规、中文支持 6 个维度实测。
10182 0
|
9月前
|
JSON 物联网 数据处理
C语言中高效处理JSON数据(cJSON库使用教程与入门指南)
cJSON 是轻量级C语言JSON库,适用于嵌入式系统,支持JSON解析与生成。本文详解其安装、使用方法及注意事项,助力C语言开发者高效处理JSON数据,适合初学者入门。
|
5月前
|
人工智能 Windows Linux
【Ollama】Ollama安装保姆级教程(超级详细,适合新手)
Ollama是一款开源的本地大语言模型(LLM)运行工具,类比“AI领域的Docker”,支持在Windows/macOS/Linux上一键部署Qwen、Llama 3、Mistral等主流开源模型,兼顾隐私、离线与低成本优势。(239字)
|
9月前
|
缓存 小程序 数据安全/隐私保护
短剧平台 item_get_video - 获取各平台短剧视频接口对接全攻略:从入门到精通
短剧行业迅猛发展,抖音、快手、红果等平台汇聚海量内容。item_get_video接口可精准获取单部短剧的播放地址、分集信息、作者数据等,支撑聚合平台搭建、分销推广与竞品监测。本文详解主流平台接口特性、权限申请、代码实现及问题排查,助力开发者高效对接,提升开发效率与用户体验。
|
人工智能 安全 数据库
构建可扩展的 AI 应用:LangChain 与 MCP 服务的集成模式
本文以LangChain和文件系统服务器为例,详细介绍了MCP的配置、工具创建及调用流程,展现了其“即插即用”的模块化优势,为构建复杂AI应用提供了强大支持。

热门文章

最新文章