Skip to content
VDS · Weby a webové servery

Reverse proxy: viac aplikácií na jednej adrese

Ako zdieľať jednu verejnú adresu VDS medzi viacerými aplikáciami podľa domén a ciest, správne posielať hlavičky a nerozbiť WebSocket.

Aktualizované 23. augusta 2026

Stroj má jednu verejnú IPv4 adresu, ale zvyčajne na ňom beží viacero aplikácií. Reverzný proxy prijíma všetky požiadavky na portoch 80 a 443 a smeruje ich na interné služby podľa názvu domény alebo cesty. Zároveň drží jediný certifikát a spoločné logy.

Rozloženie

Každá aplikácia počúva na svojom vlastnom lokálnom porte a iba na 127.0.0.1:

  • frontendová stránka — 127.0.0.1:3000;
  • API — 127.0.0.1:8000;
  • monitorovací dashboard — 127.0.0.1:9090.

Vonku je vystavený iba Nginx. Ako overíš, že aplikácia nie je vystavená priamo:

ss -tulpn | grep LISTEN

Riadky ako 0.0.0.0:3000 znamenajú, že služba je dostupná z internetu, obchádza proxy a bez šifrovania.

Podľa domény

server {
    listen 80;
    server_name app.example.ru;
    location / {
        proxy_pass http://127.0.0.1:3000;
        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;
    }
}

server {
    listen 80;
    server_name api.example.ru;
    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Bez X-Forwarded-For aplikácia vidí každú požiadavku ako prichádzajúcu z 127.0.0.1 a akékoľvek obmedzenia podľa IP prestanú fungovať.

Podľa cesty

location /api/ {
    proxy_pass http://127.0.0.1:8000/;
}

Lomítko na konci v proxy_pass tu zohráva dôležitú úlohu: s ním sa predpona /api odstráni a aplikácia dostane /users; bez neho dostane /api/users. Presne z tohto pochádza polovica všetkých „záhadných 404“ na proxy.

WebSocket a dlhé odpovede

location /ws/ {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 3600s;
}

Bez dvojice Upgrade/Connection sa spojenie preruší hneď po handshaku; bez zvýšeného timeoutu sa preruší po minúte ticha.

Časté chyby

PríznakPríčina
502 Bad GatewayAplikácia nebeží alebo počúva na inom porte
504 Gateway Time-outAplikácia odpovedá dlhšie než proxy_read_timeout
Nekonečné presmerovanieAplikácia nevie o HTTPS — odovzdaj X-Forwarded-Proto
Nahrávanie súborov zlyhávaclient_max_body_size je príliš malá; predvolená hodnota je 1 MB
Rovnaká IP v logoch aplikácieX-Forwarded-For sa neodovzdáva

Ďalej: viacero stránok, certifikát, Caddy s automatickým HTTPS.

Jeden certifikát na proxy pokrýva všetky aplikácie za ňou. Interné spojenia cez 127.0.0.1 nepotrebujú šifrovanie — nikdy neopustia stroj.