全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-20 7 分钟 ✍️ juanwangdev

正向代理与反向代理

代理服务器是客户端与服务端之间的中间层,根据代理方向分为正向代理和反向代理。

正向代理

概念

  • 代理服务器位于客户端一侧
  • 代表客户端访问外部服务器
  • 目标服务器不知道客户端真实 IP
  • 常用于:翻墙、内网访问外部资源、匿名访问
nginx
客户端 → 正向代理服务器 → 外部目标服务器

Nginx 配置

nginx
resolver 8.8.8.8;

server {
    listen 8080;
    
    location / {
        proxy_pass http://$http_host$request_uri;
        proxy_set_header Host $http_host;
    }
}

注意事项

  • Nginx 正向代理需要配置 resolver 指定 DNS 服务器
  • 不支持 CONNECT 方法(无法代理 HTTPS)
  • 适合 HTTP 协议正向代理场景

反向代理

概念

  • 代理服务器位于服务端一侧
  • 代表后端服务器接收客户端请求
  • 客户端不知道后端真实服务器地址
  • 常用于:负载均衡、安全防护、动静分离、SSL 卸载
text
客户端 → 反向代理服务器 → 后端真实服务器

Nginx 配置

text
upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
}

server {
    listen 80;
    server_name www.example.com;
    
    location / {
        proxy_pass http://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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

核心差异对比

对比项正向代理反向代理
代理对象客户端服务端
客户端感知需手动配置代理无感知(透明)
服务端感知不知道真实客户端不知道被代理
主要用途突破网络限制、匿名负载均衡、安全、缓存
部署位置客户端网络出口服务端前端
Nginx 支持有限(需第三方模块完善)原生完整支持

反向代理常用指令

指令作用
proxy_pass转发请求到后端服务器
proxy_set_header设置转发请求头
proxy_connect_timeout与后端建立连接超时时间
proxy_read_timeout等待后端响应超时时间
proxy_buffering是否启用响应缓冲

要点总结

  • 正向代理代表客户端,反向代理代表服务端
  • Nginx 主要用于反向代理场景,原生支持完善
  • 正向代理需配置 resolver,且对 HTTPS 支持有限
  • 反向代理核心指令:proxy_pass、proxy_set_header
  • 反向代理可实现负载均衡、SSL 卸载、安全防护等功能

📝 发现内容有误?点击此处直接编辑

← 上一篇 日志管理
下一篇 → 虚拟主机配置
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库