Nginx Load Balancing on Debian 12
Nginx supports round-robin, least-connections, IP-hash, and weighted load balancing for upstream groups.
Step 1 – Round-robin (default)
upstream myapp {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}
server {
listen 80;
server_name lb.example.com;
location / {
proxy_pass http://myapp;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Step 2 – Least connections
upstream myapp {
least_conn;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
Step 3 – IP hash (session persistence)
upstream myapp {
ip_hash;
server 192.168.1.10:8080;
server 192.168.1.11:8080;
}
Step 4 – Weighted load balancing
upstream myapp {
server 192.168.1.10:8080 weight=3;
server 192.168.1.11:8080 weight=1;
}
Step 5 – Health checks (Nginx Plus or third-party)
Open-source Nginx uses passive health checks. Mark a server as backup or
down:
upstream myapp {
server 192.168.1.10:8080;
server 192.168.1.11:8080 backup;
server 192.168.1.12:8080 down;
}
Step 6 – Reload
nginx -t && systemctl reload nginx