Nginx反向代理详解(原理+架构+配置)

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

Nginx反向代理

在互联网架构中,用户通常不会直接访问后端服务器,而是先经过一个统一入口。

这个入口就是:Nginx反向代理服务器。

反向代理是指:客户端并不直接访问后端真实服务器,而是先访问代理服务器。

再由代理服务器转发请求到后端服务,并将结果返回给客户端。

Nginx反向代理详解(原理+架构+配置)-mikechen

 

 

Nginx反向代理原理

Nginx 反向代理的核心逻辑可以概括为“接收请求—转发请求—获取响应—返回响应”。

Nginx反向代理详解(原理+架构+配置)-mikechen

1. 接收请求

客户端发送:

GET /api/user

Host:www.xxx.com

Nginx监听:

80端口
443端口

2. Location匹配

配置:

server {

 listen 80;


 location /api {

 }

}

请求:

/api/user

匹配:

location /api

3. upstream选择服务器

配置:

upstream backend {

 server 192.168.1.10:8080;

 server 192.168.1.11:8080;

}
请求1 → server1

请求2 → server2

请求3 → server1
4. 转发请求

配置:

location / {

 proxy_pass http://backend;

}

最终:

客户端

↓

Nginx

↓

Spring Boot

 

Nginx反向代理配置

Nginx通过proxy_pass指令实现反向代理,upstream模块定义后端服务器组。

Nginx反向代理详解(原理+架构+配置)-mikechen

请求到达Nginx后,经过location匹配,交给proxy模块处理。

http {
    upstream backend {
        server 192.168.1.101:8080 weight=5;
        server 192.168.1.102:8080 weight=3;
        server backup.example.com:8080 backup;  # 备用
    }

    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_server:定义后端服务组;

server 127.0.0.1:8080:指定真实应用服务器地址;

listen 80:监听 80 端口;

server_name example.com:绑定域名;

proxy_pass:将请求转发到后端服务。

 

评论交流
    说说你的看法