web-dev-qa-db-fra.com

Equilibre de charge basé sur IP dans nginx

J'ai deux serveurs Backend fonctionnant sur 192.168.0.101:8080 et 192.168.0.102:8080.

Nginx tourne sur 192.168.0.111:80, je veux forcer nginx à inverser le trafic dans un srever de backend spécifique par IP.

geo $upstream {
        192.168.0.150 backend-1;
        192.168.0.250 backend-2;
        default backend-1;
}

upstream backend-1 {
   ip_hash;
   server 192.168.0.101:8080;
}

upstream backend-2 {
   ip_hash;
   server 192.168.0.102:8080;
}


server {
        listen 80;

        location / {
        proxy_pass http://$upstream;
        proxy_redirect off;
            proxy_set_header Host               $Host;
            proxy_set_header X-Forwarded-Host   $Host;
            proxy_set_header X-Forwarded-Server $Host;
            proxy_set_header X-Real-IP          $remote_addr;
            proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        }                                                                    
}

Je suis confus à propos de cette configuration. Est-ce que ça va marcher comme ça voulait dire? Est-ce que toutes les requêtes sauf 192.168.0.150 iront à backend-1 (192.168.0.102:8080)? et 192.168.0.250 dans le backend-2?

Question: Il ne s'agit pas d'une redirection basée sur des adresses IP. Pourquoi?

1
Fahad Ahammed

La configuration de travail:

geo $upstream {
        default backend-1;
        192.168.0.150 backend-1;
        192.168.0.250 backend-2;
}

upstream backend-1 {
   server 192.168.0.101:8080;
}

upstream backend-2 {
   server 192.168.0.102:8080;
}


server {
        listen 80;

        location / {
        proxy_pass http://$upstream;
        proxy_redirect off;
        proxy_set_header Host               $Host;
        proxy_set_header X-Forwarded-Host   $Host;
        proxy_set_header X-Forwarded-Server $Host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        }                                                                    
}
1
Fahad Ahammed