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íznak | Príčina |
|---|---|
502 Bad Gateway | Aplikácia nebeží alebo počúva na inom porte |
504 Gateway Time-out | Aplikácia odpovedá dlhšie než proxy_read_timeout |
| Nekonečné presmerovanie | Aplikácia nevie o HTTPS — odovzdaj X-Forwarded-Proto |
| Nahrávanie súborov zlyháva | client_max_body_size je príliš malá; predvolená hodnota je 1 MB |
| Rovnaká IP v logoch aplikácie | X-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.1nepotrebujú šifrovanie — nikdy neopustia stroj.