nginx上游行为(如果没有哈希头)

nginx上游行为(如果没有哈希头),nginx,Nginx,我希望使用: upstream backend { hash $http_my_custom_header; server 1; server 2; } 我想处理两个案件: 如果我的头有my_custom_头,它应该坚持与my_custom_头的值关联的单个节点 如果请求中没有my_custom_头,则应使用标准循环 以上配置是否足以实现这一点?我是否可以假设,如果在散列中没有使用头,loadbalancer将回退到标准循环 我查看了:但我没有找到确认 谢谢 您可以使用多个请

我希望使用:

upstream backend {
  hash $http_my_custom_header;

  server 1;
  server 2;
}
我想处理两个案件:

  • 如果我的头有
    my_custom_头
    ,它应该坚持与
    my_custom_头的值关联的单个节点
  • 如果请求中没有
    my_custom_头
    ,则应使用标准循环
以上配置是否足以实现这一点?我是否可以假设,如果在
散列中没有使用头,loadbalancer将回退到标准循环

我查看了:但我没有找到确认


谢谢

您可以使用多个请求参数的组合来平均分配负载,同时将相同的客户端固定在特定的上游服务器上:

upstream backend {
  hash '$remote_addr $http_my_custom_header $http_user_agent';

  server 1;
  server 2;
}
在会话期间,用户代理和客户端的IP地址很可能是相同的

这些参数的组合将在单独请求序列期间保持不变,并将生成相同的哈希。 因此,不同的客户端将被均匀地分配到所有上游服务器上,无论它们是否具有自定义头


注意:当broswer配置为使用某个anonimizing服务时,同一客户端的查询可能来自不同的IP地址。

您可以使用多个请求参数的组合来平均分配负载,同时将相同的客户端固定在特定的上游服务器上:

upstream backend {
  hash '$remote_addr $http_my_custom_header $http_user_agent';

  server 1;
  server 2;
}
在会话期间,用户代理和客户端的IP地址很可能是相同的

这些参数的组合将在单独请求序列期间保持不变,并将生成相同的哈希。 因此,不同的客户端将被均匀地分配到所有上游服务器上,无论它们是否具有自定义头

注意:当broswer配置为使用某个Anonimize服务时,同一客户端的查询可能来自不同的IP地址