Nginx可以通过proxy_pass指令实现反向代理多个应用。主要的配置步骤如下:
- 定义upstream块,设置多个应用服务器地址。
upstream app_servers {
server 127.0.0.1:8000;
server 127.0.0.1:8001;
}
- 在server段的location /块中使用proxy_pass http://
server {
location / {
proxy_pass http://app_servers;
}
}
- 配置负载均衡策略,将请求分发到多个应用服务器。常用策略有:
- 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;
}
- 设置代理超时时间,避免请求被无限等待。
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;
}
}
这种配置可以实现请求的负载均衡分发与反向代理,加大应用服务器的负载处理能力。Nginx作为反向代理可以屏蔽应用服务器的IP地址,降低攻击面,提高整体安全性。