Hero Image

Nginx Load Balancing on Ubuntu 24.04

Nginx Load Balancing on Ubuntu 24.04

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