Nginx 作为高性能服务器,除了搭建普通的 web 服务,也经常用作反向代理或微服务网关。
为了实现服务高可用,通常会启动多个服务实例,这样某个实例挂掉并不影响整体的可用性,Nginx 可以在多个实例中实现负载均衡,并提供了多种负载均衡策略。
这里在本机开启多个实例,在这些实例中实现负载均衡。
在 http 配置:
1 | upstream backser { |
启动服务端:
1 | # 启动三个Java实例 |
默认情况 Nginx 会把请求轮流派发给各个实例,实现最简单的负载均衡。
这种轮询策略可以加入权重,进行负载微调和故障转移:
1 | upstream backser { |
另一种使用较多的是 ip_hash 策略,能将来自同一 IP 的客户端请求派发给同一个服务实例,在分布式环境中,可以解决 session 不共享的问题。
1 | upstream backser { |
加载修改后的配置:
1 | nginx -s reload |
然后同一个客户端请求会发现只有一个实例在响应。


