1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  Nginx load balancer - konfiguracja

# Nginx load balancer - konfiguracja upstream, algorytmy i health checks

Opublikowano: 9 kwietnia 2026 · Kategoria: VPS

⚡ W skrócie · 8 min czytania

-   Jak skonfigurować Nginx jako load balancer: blok upstream, algorytmy (round-robin, least\_conn, ip\_hash), weights, health checks, sticky sessions, SSL termination i troubleshooting.
-   Podstawowy setup - blok upstream.
-   Algorytmy load balancingu.
-   Weights - nierówne serwery.
-   Pasywne health checks.

Jeden VPS nie wyrabia z ruchem? Zamiast kupować większy serwer (scale up), dodaj drugi i rozdziel ruch (scale out). Nginx od lat jest darmowym, wydajnym load balancerem - potrafi obsłużyć dziesiątki tysięcy połączeń na sekundę i rozdzielać je między backendy według kilku algorytmów. Oto kompletny przewodnik po konfiguracji.

## Podstawowy setup - blok upstream

Konfiguracja load balancera to dwa bloki: `upstream` (lista backendów) oraz `server` z `proxy_pass`:

```
# /etc/nginx/sites-available/loadbalancer.conf

upstream backend {
    server 10.0.0.10:3000;
    server 10.0.0.11:3000;
    server 10.0.0.12:3000;
}

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Timeouts
        proxy_connect_timeout 5s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}
```

```
# Aktywacja
sudo ln -s /etc/nginx/sites-available/loadbalancer.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```

## Algorytmy load balancingu

Algorytm

Dyrektywa

Kiedy używać

Round-robin

(domyślny, brak dyrektywy)

Stateless API, backendy identyczne, krótkie żądania

Least connections

`least_conn;`

Długie żądania (video, długi download), nierówne obciążenie

IP hash

`ip_hash;`

Sesje bez shared storage - klient zawsze na ten sam backend

Generic hash

`hash $request_uri;`

Cache affinity - ten sam URL zawsze na ten sam backend

Random two-choices

`random two least_conn;`

Duża liczba backendów (10+), alternatywa dla least\_conn

## Weights - nierówne serwery

Masz jeden mocny serwer i dwa słabsze? Użyj `weight` - wyższa waga = więcej ruchu. Przy `weight=3` serwer dostanie 3× więcej requestów niż przy `weight=1`:

```
upstream backend {
    server 10.0.0.10:3000 weight=3;  # 60% ruchu
    server 10.0.0.11:3000 weight=1;  # 20% ruchu
    server 10.0.0.12:3000 weight=1;  # 20% ruchu
}
```

## Pasywne health checks

Darmowy Nginx nie pinguje backendów aktywnie - czeka aż pojawi się błąd. Parametry `max_fails` i `fail_timeout` kontrolują kiedy wykluczyć backend:

```
upstream backend {
    # Jeśli 3 błędy w 30s - wyklucz na 30s
    server 10.0.0.10:3000 max_fails=3 fail_timeout=30s;
    server 10.0.0.11:3000 max_fails=3 fail_timeout=30s;

    # Backup - używany tylko gdy wszystkie główne padną
    server 10.0.0.99:3000 backup;

    # Tymczasowo wyłączony (np. podczas deploymentu)
    server 10.0.0.12:3000 down;
}
```

Co liczy się jako "błąd"? Domyślnie: timeout połączenia, reset, HTTP 5xx. Dodaj 404/403 do listy przez `proxy_next_upstream`:

```
location / {
    proxy_pass http://backend;
    proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
    proxy_next_upstream_tries 3;
    proxy_next_upstream_timeout 10s;
}
```

## SSL termination + redirect HTTP→HTTPS

```
server {
    listen 80;
    server_name app.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name app.example.com;

    ssl_certificate /etc/letsencrypt/live/app.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/app.example.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;

    location / {
        proxy_pass http://backend;  # Backend mówi HTTP - Nginx odszyfrowuje
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
    }
}
```

## Best practices

-   **Backendy w prywatnej sieci (VPC)** - nigdy nie wystawiaj backendów na publiczne IP. Tylko load balancer jest dostępny z internetu.
-   **Stateless backendy** - sesje trzymaj w Redis/DB, nie w pamięci procesu. Wtedy możesz używać round-robin zamiast ip\_hash i łatwiej skalujesz.
-   **Keepalive do backendów** - dodaj `keepalive 32;` w upstream (utrzymuje 32 otwarte połączenia) + `proxy_http_version 1.1;` + pusty `proxy_set_header Connection "";`. Zmniejsza overhead TCP handshake.
-   **Monitoring stub\_status** - włącz endpoint `/nginx_status` (z allow tylko z localhost) żeby śledzić aktywne połączenia i reqps.
-   **Zero-downtime deploy** - używaj `down` na backendzie przed deployem, potem reload Nginx, deploy, usuń `down`, reload. Ruch nie trafia na aktualizowany serwer.

**Uwaga:** Sam load balancer jest nowym SPOF. Dla prawdziwego HA potrzebujesz 2 load balancery + keepalived (VRRP) z wspólnym virtual IP, albo zewnętrzny LB (Cloudflare, AWS ALB).

## Najczęstsze pytania

Czym różni się Nginx reverse proxy od load balancera? +

Reverse proxy to Nginx stojący przed jedną aplikacją (np. Node.js na porcie 3000) - przekazuje żądania z portu 80/443 do backendu, dodaje SSL, cache, kompresję. Load balancer to reverse proxy, który rozdziela ruch między kilka backendów (np. 3 instancje Node.js). Każdy load balancer jest reverse proxy, ale nie każdy reverse proxy jest load balancerem. W Nginx różnica to liczba serwerów w bloku upstream: 1 = proxy, 2+ = load balancer.

Jakie algorytmy load balancingu obsługuje Nginx? +

Nginx oferuje: round-robin (domyślny, po kolei), least\_conn (do serwera z najmniejszą liczbą aktywnych połączeń - dobry dla długich żądań), ip\_hash (stały backend per IP klienta - przydatny dla sesji bez shared storage), hash (custom key, np. $request\_uri), random (losowy z opcjonalnym two-choices). Weighted round-robin (weight=3) pozwala kierować więcej ruchu na mocniejsze serwery. Algorytm wybierasz w bloku upstream.

Czy darmowy Nginx ma health checks dla backendów? +

Darmowy Nginx (open source) ma pasywne health checks: max\_fails=3 fail\_timeout=30s - jeśli backend zwróci 3 błędy w 30 sekund, zostanie wykluczony na 30s. Aktywne health checks (okresowe requesty HTTP do /health) są dostępne tylko w Nginx Plus (płatny). W open source możesz użyć haproxy albo dodać external monitor (skrypt + API Nginx do usuwania backendów).

Jak obsłużyć SSL w load balancerze Nginx? +

Dwie strategie: (1) SSL termination - Nginx ma certyfikat Lets Encrypt, odszyfrowuje HTTPS i rozmawia z backendami po HTTP (szybsze, prostsze, standard). (2) SSL passthrough - Nginx używa stream module i przekazuje ruch TLS bez deszyfracji (rzadsze, potrzebne dla mTLS). W 99% przypadków wybierasz (1): Lets Encrypt na Nginx + HTTP na backendy w prywatnej sieci VPC.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z dużym RAM i transferem - idealny Nginx load balancer dla 2-5 backendów

VPS LB

[Aktywuj rabat →](/out/contabo/#reklama "Contabo")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo/)

Mikrus

Tani VPS do testowania setupu load balancera przed produkcją

Tani VPS

[Aktywuj rabat →](/out/mikrus/#reklama "Mikrus")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus/)

CyberFolks

LiteSpeed hosting - alternatywa dla samodzielnego Nginx setupu

Managed

[Aktywuj rabat →](/out/cyberfolks/#reklama "CyberFolks")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/cyberfolks/)

## Powiązane strony

-   [Nginx - konfiguracja virtual hostów](/baza-wiedzy/nginx-vhost-konfiguracja/)
-   [Apache vs Nginx - porównanie](/baza-wiedzy/apache-vs-nginx-hosting/)
-   [Varnish cache - konfiguracja VCL](/baza-wiedzy/varnish-cache-konfiguracja/)
-   [Wszystkie artykuły](/baza-wiedzy/)
-   [HAProxy - load balancer dla aplikacji webowych
    
    HAProxy vs Nginx load balancer: konfiguracja frontend/backend, algorytmy roundrobin/leastconn/source, health checks,…
    
    ](/baza-wiedzy/haproxy-load-balancer/)
-   [VPS pod Node.js i Next.js - PM2, Nginx, SSL, CI/CD
    
    Jak uruchomić Node.js i Next.js na VPS? PM2, reverse proxy Nginx/Caddy, SSL Let's Encrypt i CI/CD przez GitHub Actions.…
    
    ](/baza-wiedzy/vps-pod-nodejs-nextjs/)
-   [Kubernetes Ingress - Traefik i Nginx Ingress Controller
    
    Kubernetes Ingress: instalacja Traefik (Helm), TLS z cert-manager i Let's Encrypt, IngressClass, rate limiting,…
    
    ](/baza-wiedzy/kubernetes-ingress-traefik/)
-   [Jaki VPS wybrać?](/jaki-vps-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 9 kwietnia 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)