Nginx反向代理最全详解(图文全面总结)

Nginx是大型架构核心,下面我详解Nginx反向代理@mikechen

Nginx反向代理

正向代理:客户端自己配置代理(如翻墙代理)。

代理替用户访问互联网,服务器不知道真实客户端是谁。

反向代理:用户只知道代理(Nginx)的地址。

由 Nginx 把请求转发给内部真实服务,客户端不直接接触后端。

如下图所示:

Nginx反向代理最全详解(图文全面总结)-mikechen

客户端只知道 Nginx 的 IP,不知道后端真实业务服务器(Upstream)的存在。

这样,可以隐藏后端真实 IP,提升安全性,还可以:负载均衡 + 高可用。

 

Nginx反向代理架构

Nginx反向代理架构,如下图所示:

Nginx反向代理最全详解(图文全面总结)-mikechen

用户请求
   ↓
[Nginx 反向代理层]
   ↓
[应用服务器集群]
   ↓
[数据库 / 缓存]

客户端层:只访问域名(如 mikechen.cc)。

Nginx 层:处理所有入口流量,支持集群 + Keepalived / VIP 实现高可用。

后端层:多台服务器,只监听内网端口(如 8080),完全对公网不可见。

Nginx 采用事件驱动 + 异步非阻塞模型(Master + Worker 进程),单机轻松支撑数万并发。

 

 

Nginx反向代理原理

整体工作流程,如下:

Nginx反向代理最全详解(图文全面总结)-mikechen

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

工作流程如下:

  1. 客户端发起 HTTP/HTTPS 请求 → Nginx 监听端口(80/443)。
  2. Nginx 根据 server_name + location 匹配规则处理请求。
  3. 通过 upstream 定义的后端组 + 负载均衡算法选择一台后端服务器。
  4. Nginx 使用 proxy_pass 将请求完整转发(可改写 Header、URI)。
  5. 后端处理后返回响应 → Nginx 可缓冲、压缩、缓存后再返回客户端。
  6. 整个过程客户端感知不到后端真实服务器。

评论交流
    说说你的看法