nginx 配置中的服务器顺序重要吗?

nginx 配置中的服务器顺序重要吗?

我有一个自定义工具,它以以下形式生成一部分 nginx 配置,例如:

upstream  backend  {
  ip_hash;
  server server1:8080;
  server server2:8080;
  server localhost:8080 backup;
 }

有时,有些服务器会出现故障,有些服务器则会正常运行,下次更新可能会产生以下结果:

upstream  backend  {
  ip_hash;
  server server1:8080;
  server server3:8080;
  server server2:8080 down;
  server localhost:8080 backup;
 }

如您所见,server3 已出现,server2 被标记为已关闭。我的问题如下:nginx 是否关心配置中显示的服务器顺序?我需要对自定义工具的输出进行排序吗?

在这个例子中,初始顺序被改变了,我不知道 nginx 是否能正确处理它。

答案1

如果我没记错的话,使用 ip_hash 轮换方法,顺序很重要。Nginx 对客户端 IP 进行哈希处理,然后将客户端发送到列表中的某个项目。如果您更改顺序,ip_hash 会将客户端引导到另一个上游节点。根据建议这里,我会一直在您的文件中保留整个服务器列表,如果它处于离线状态,则只需将其标记为“关闭”。

相关内容