Nginx如何实现反向代理多个后端服务器?

Nginx可以通过proxy_pass指令实现反向代理多个后端服务器。主要的配置步骤如下:
1、 定义upstream块,设置多个后端服务器地址。

upstream app_servers {
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
}

2、 在server段的location /块中使用proxy_pass http://

server {
    location / {
        proxy_pass http://app_servers;
    }
}

3、 配置负载均衡策略,将请求分发到多个后端服务器。常用策略有:

  • ip_hash:根据客户端IP进行hash计算,总是代理到同一台服务器,用于session会话保持。
  • least_conn:选择连接数最少的服务器,用于平衡各服务器负载。
  • round_robin:按权重轮询,默认使用此策略。
upstream app_servers {
    ip_hash;
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
}

4、 设置代理超时时间,避免请求被无限等待。

proxy_connect_timeout 30;   # 连接超时时间
proxy_send_timeout 60;     # 发送超时时间  
proxy_read_timeout 60;     # 接收超时时间

例如,完整配置:

upstream app_servers {
    ip_hash;
    server 127.0.0.1:8000;
    server 127.0.0.1:8001; 
}

server {
    location / {
        proxy_pass http://app_servers;
        proxy_connect_timeout 30;
        proxy_send_timeout 60;  
        proxy_read_timeout 60; 
    }
}