反向代理是 Nginx 最强大的功能之一:客户端访问 Nginx,Nginx 再把请求转发给后端真实服务。它能隐藏后端、统一入口、做负载均衡。

一、最简单的反向代理

server {
    listen 80;
    server_name api.example.com;
    location / {
        proxy_pass http://127.0.0.1:8080;   # 转发到本地 8080
    }
}

二、传递真实信息

默认后端拿到的 IP 是 Nginx 的,要加上这几行让后端知道真实客户端:

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

三、负载均衡:多实例分流

假设后端跑了 3 个实例(8080/8081/8082),用 upstream 统一管理:

upstream backend {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}
server {
    location / {
        proxy_pass http://backend;   # 自动轮询分发
    }
}

四、负载均衡策略

反向代理 + 负载均衡是无状态服务横向扩展的基础。加机器就能加容量,是高并发的核心手段。

五、健康检查

Nginx 默认会在某实例失败时自动剔除。可用 max_failsfail_timeout 调节敏感度:

    server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;

六、小结

反向代理是后端架构的枢纽。掌握它,你就具备了设计中小型服务架构的能力。后续可进一步学习 Nginx 的缓存、限流等高级特性。