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

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

Nginx反向代理

你要搞懂Nginx反向代理,首先,你要搞懂正向代理。

正向代理:就是客户端知道代理服务器的存在。

请求先发给代理,再由代理访问目标互联网资源,典型的场景就是:代理客户端(例如翻墙工具)。

Nginx反向代理原理详解(图文全面总结)-mikechen
反向代理,就是反过来,客户端不知道后端真实服务器的存在。

以为自己在直接访问 Nginx,Nginx 接收请求后转发给内部的后端服务器集群,并返回结果。

常用于负载均衡、隐藏后端架构、动静分离、安全防护等。

 

Nginx反向代理原理

当 Nginx 作为反向代理工作时,请求经历以下关键阶段:

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

建立连接:客户端与 Nginx 建立 TCP 连接(三次握手)。

请求接收:Nginx 接收完整的 HTTP 请求头(Header)。

上游选择:根据配置文件中的 proxy_pass 指令。

通过负载均衡算法(如轮询、Hash)选择一台后端服务器(Upstream)。

内容转发:Nginx 建立与后端服务器的连接,将请求发送出去,并将响应流式地传回给客户端。

Nginx反向代理配置

常见配置通常包含 upstream 和 proxy_pass,前者定义后端集群,后者定义转发目标 。

常配的转发头包括 Host、X-Real-IP、X-Forwarded-For 和 X-Forwarded-Proto,用于把真实客户端信息传给后端 。

如果后端有多台机器,还可以结合轮询、加权轮询、最少连接、IP Hash 等策略做流量分配 。

典型配置如下:

upstream backend {
    server 192.168.1.10:8080 weight=3;
    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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

 

评论交流
    说说你的看法