Nginx反向代理技术详解(架构+原理+案例)

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

Nginx反向代理

Nginx反向代理(Reverse Proxy)是Nginx最核心、最常用的功能之一。

反向代理指:客户端不知道真实服务端,请求先到代理服务器,由代理转发给后端服务器。

如下图所示:

Nginx反向代理技术详解(架构+原理+案例)-mikechen

正向代理:代理的是「客户端」。

比如:翻墙代理,服务端不知道真正的客户端是谁。

反向代理:代理的是「服务端」。

客户端只看见 Nginx,不知道真正是哪台后端在处理。

 

Nginx反向代理架构

典型「反向代理 + 负载均衡」架构可以简单理解为三层。

如下图所示:

Nginx反向代理技术详解(架构+原理+案例)-mikechen

Client
   │
   ▼
Nginx(反向代理)
   │
   ▼
Backend Servers
(App1 / App2 / App3)

客户端层:浏览器 / APP,只知道访问 nginx.mikechen.cc。

Nginx 层:1 台或多台 Nginx,暴露公网 IP 或 VIP,做反向代理、SSL、限流、缓存等。

后端服务层:多台应用服务器(Java/Python/PHP…),只在内网暴露端口,不直接对公网开放。

反向代理转发机制:Nginx根据配置的upstream和proxy_pass指令。

将客户端请求转发到后端服务器,并将后端响应返回给客户端。它可以对请求头、响应头及URI进行改写与转发控制。

 

Nginx反向代理

Nginx反向代理技术详解(架构+原理+案例)-mikechen

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

    server {
        listen 80;
        server_name 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;
        }
    }
}

upstream backend:定义一组后端服务器,后面可以做负载均衡算法扩展。

proxy_pass http://backend:把匹配到的请求转发到 backend 这个上游集群。

proxy_set_header:把真实客户端 IP 等信息带给后端,否则后端看到的只会是 Nginx 的内网 IP。

评论交流
    说说你的看法