插件窝 干货文章 nginx如何配置upstream反向代理

nginx如何配置upstream反向代理

backend server proxy example 449    来源:    2025-04-22

Nginx Upstream 反向代理配置指南

基本配置

要在Nginx中配置upstream反向代理,主要需要修改nginx.conf或在conf.d/目录下创建新的配置文件。以下是基本配置示例:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

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

高级配置选项

1. 负载均衡算法

upstream backend {
    # 轮询(默认)
    server backend1.example.com;
    server backend2.example.com;

    # 加权轮询
    server backend3.example.com weight=3;

    # IP哈希(保持会话)
    ip_hash;

    # 最少连接数
    least_conn;
}

2. 健康检查

upstream backend {
    server backend1.example.com max_fails=3 fail_timeout=30s;
    server backend2.example.com max_fails=3 fail_timeout=30s;
}

3. 备用服务器

upstream backend {
    server backend1.example.com;
    server backend2.example.com backup;
}

4. 长连接保持

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    keepalive 32;
}

完整示例

http {
    upstream backend {
        least_conn;
        server 192.168.1.100:8080 weight=5 max_fails=3 fail_timeout=30s;
        server 192.168.1.101:8080 weight=3;
        server 192.168.1.102:8080 backup;
        keepalive 32;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            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;

            # 超时设置
            proxy_connect_timeout 5s;
            proxy_send_timeout 10s;
            proxy_read_timeout 10s;

            # 缓冲设置
            proxy_buffering on;
            proxy_buffer_size 4k;
            proxy_buffers 8 16k;
            proxy_busy_buffers_size 32k;
        }
    }
}

配置完成后

  1. 测试配置是否正确:
nginx -t
  1. 重新加载配置:
nginx -s reload

注意事项

  1. 确保后端服务器可以访问
  2. 根据实际需求调整超时和缓冲参数
  3. 对于HTTPS站点,需要配置SSL证书并修改proxy_pass为https://
  4. 监控后端服务器的健康状态
  5. 在高流量环境下可能需要调整内核参数

希望这个配置指南对您有所帮助!如需更具体的配置建议,请提供您的具体需求场景。