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;
}
}