nginx的四种代理模式

Nginx 的代理模式从不同维度可以有不同的分类。从运维和架构设计 的角度看,最核心、最常用的主要有以下 4 种。

为了让你更直观地理解,我用一个对比表格先总结它们的核心差异:

代理模式 工作层级 核心特点 典型应用场景
正向代理 应用层 代理客户端访问外网,隐藏客户端身份 公司内网统一上网出口、访问受限资源
反向代理 应用层 代理服务端接收请求,隐藏服务器身份 负载均衡、Web应用发布、API网关
四层代理 传输层 基于IP和端口转发,不解析HTTP内容 数据库读写分离、MySQL/Redis代理、TCP/UDP流量分发
透明代理 应用层/传输层 客户端无感知,无需手动配置代理 企业网络审计、缓存加速

1. 正向代理 (Forward Proxy)

这是你平时可能接触比较多的模式,比如在家里用VPN或"梯子"。

  • 工作对象 :客户端。
  • 工作流程:客户端A想访问服务器B,但它不直接访问,而是把请求发给代理服务器C,C再去访问B,B以为请求是C发起的。A就通过C隐藏了自己的真实IP。
  • 在Nginx中的实现 :使用 ngx_http_proxy_module 模块,配合 resolver (DNS解析器)和 proxy_pass 指令。注意,Nginx作为正向代理的功能相对基础,高并发场景下不如Squid或HAProxy专业。
  • 作用 :
    • 访问被限制的网络资源(如访问Google)。
    • 缓存内容,加速访问。
    • 隐藏客户端身份。

2. 反向代理 (Reverse Proxy)

这是Nginx最核心、最常用的功能,也是我们刚才讨论Tomcat负载均衡时的核心。它是对外暴露的"大门"。

  • 工作对象 :服务端。
  • 工作流程:客户端A想访问服务器B,但它访问的是代理服务器C。C根据请求规则,去访问内网中的B、D、E等服务器,然后把结果返回给A。A根本不知道真正服务的是哪台机器。
  • 在Nginx中的实现 :使用 proxy_pass 指令将请求转发到一组upstream(后端服务器集群)。你之前看到的Tomcat负载均衡配置,就是典型的反向代理。
  • 作用 :
    • 负载均衡:将流量分发到多个后端服务器。
    • 高可用:检测后端健康状态,自动摘除故障节点。
    • 安全与加速:提供SSL加密(HTTPS)、缓存静态内容,减轻后端压力。

3. 四层代理 (Layer 4 Proxy) - stream模块

传统的Nginx主要工作在第七层(应用层),但从1.9.0版本开始引入了 stream 模块,使其也能工作在第四层(传输层)。这是一个重要的区分。

  • 工作层级:TCP/UDP协议层。它不关心你传输的是什么内容(HTTP、MySQL、Redis、SSH都可以)。

  • 工作流程 :它就像个高级路由器,客户端发起一个TCP连接,Nginx根据目标端口 或IP地址,把整个TCP连接转发到后端的某个服务器上。

  • 在Nginx中的实现 :在 nginx.conf 中使用 stream {} 块,而不是 http {} 块。

    nginx 复制代码
    stream {
        upstream redis_cluster {
            server 192.168.1.10:6379;
            server 192.168.1.11:6379;
        }
        server {
            listen 6379;
            proxy_pass redis_cluster;
        }
    }
  • 作用 :

    • 任何基于TCP/UDP的服务的负载均衡:如MySQL、Redis、RabbitMQ、SSH、DNS、RADIUS等。
    • 性能更高:因为解析的协议头更少,转发效率比七层代理高。

4. 透明代理 (Transparent Proxy)

这个模式是"无感的"。你可以把它看作是正向代理的一种高级形式。

  • 工作流程:客户端A以为自己直接访问的是服务器B,但实际上,网络中的路由器或交换机把A的流量"劫持"到了代理服务器C。C处理后再转发给B。A全程都不知道C的存在,也无需在浏览器或电脑上配置任何代理。
  • 实现方式 :这通常不单靠Nginx,需要结合 iptables 等防火墙技术,将特定的流量(如目标端口80)重定向到Nginx。
  • 作用 :
    • 企业上网审计:员工无需任何设置,公司就能监控所有网页访问记录。
    • 内容缓存:运营商或大企业网内部署的透明缓存,加速用户下载。

总结与选型建议

你的需求是... 应该选择哪种模式?
公司内网员工要统一访问外网,隐藏身份、突破限制 正向代理
发布公司官网、API,要做Web应用的负载均衡、HTTPS加密 反向代理(最常用)
为后端的MySQL、Redis集群做负载均衡,不关心HTTP内容 四层代理 (stream)
无差别拦截内网所有HTTP流量,用于上网行为监控或缓存加速 透明代理(需配合iptables)

理解这四种模式,你就能更好地设计或维护你手中的Nginx了。你目前是在规划公司新业务的流量入口,还是遇到了某个具体服务(比如Web应用或数据库)的代理问题?告诉我你的场景,我可以帮你给出更具体的配置建议。

相关推荐
FY@-@4 小时前
云计算基础(下):虚拟化原理与 DAS/NAS/SAN 存储
运维·服务器·云计算
硅基手札4 小时前
SPI技术系列 13 · SPI 调试与排查
linux·运维·stm32·单片机·嵌入式硬件·bug
溜达的大象4 小时前
飞牛NAS部署ONLYOFFICE Docs:把文档、表格和PPT的在线编辑能力放到自己的服务器上
运维·服务器·powerpoint
Sayai4 小时前
Kafka 磁盘空间治理实战:retention 保留策略、log.dirs 在线扩容、分区跨盘迁移与不停机整体换盘
大数据·运维·分布式·kafka·消息队列
erzong2314 小时前
Linux操作系统:基于环形队列&信号量实现多生产者多消费者的简易模型
linux·运维·服务器
小羊没烦恼!4 小时前
TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
java·linux·运维·服务器·开发语言·数据库·mysql
启博网络4 小时前
智慧档案库房工业组网:MR-1280 边缘大脑,实现温湿度、漏水、防火防盗设备智能联动教程
运维·网络·物联网·网络协议·网络安全·信息与通信·sdwan
海宇数据4 小时前
零信任架构实战:基于海宇普通维保查询构建自动化二手车认证展厅车况质检档案网关
运维·人工智能·架构·自动化
众壹新能源科技4 小时前
储能两充两放日收益增40%,但电池寿命缩短一半,怎么平衡
运维·人工智能·自动化
快乐的韭菜根根4 小时前
SLURM配置服务器一
运维·服务器