Associer Nginx à ip_hash 4 octets au lieu de 3

J’exécute actuellement deux serveurs principaux sur mon réseau et l’équilibrage de charge avec Nginx sous Windows.

Je suis en train de tester le système en ce moment, mais tout mon trafic est dirigé vers un serveur. En effet, l’algorithme ip_hash sortinge les trafics sur les 3 premiers octets, soit 111.222.333.XXX.

C’est un problème car tout le trafic que je vise sur le serveur a la même adresse de base (les mêmes 3 premiers octets), donc aucun de mes trafics ne va à l’autre serveur. Quelqu’un sait-il un moyen de patcher ou de modifier l’algorithme ip_hash pour filtrer à travers 4 octets.

Merci

La version open source de Nginx prend en charge la directive de hachage qui peut fonctionner de manière similaire (mais pas exactement la même chose) au mécanisme de session sticky fourni par la version commerciale:

La méthode de hachage générique: le serveur auquel une demande est envoyée est déterminé à partir d’une clé définie par l’utilisateur, qui peut être un texte, une variable ou leur combinaison. Par exemple, la clé peut être une adresse IP et un port source, ou une adresse URI:

upstream backend { hash $request_uri consistent; server backend1.example.com; server backend2.example.com; } 

https://www.nginx.com/resources/admin-guide/load-balancer/

Alors, comment utilisez-vous 4 octets de IPv4 avec la méthode de hachage? Voyons comment obtenir l’adresse IP du client dans la section Variables incorporées http://nginx.org/fr/docs/http/ngx_http_core_module.html#variables

$ remote_addr adresse du client

Donc, le code ressemble à:

 upstream backend { hash $remote_addr consistent; server backend1.example.com; server backend2.example.com; } 

MISE À JOUR :

Si vous regardez le module Stream (proxy TCP), le tout premier exemple montre exactement la même approche:

 upstream backend { hash $remote_addr consistent; server backend1.example.com:12345 weight=5; server backend2.example.com:12345; server unix:/tmp/backend3; } server { listen 12346; proxy_pass backend; }