Co je reverse proxy a k čemu slouží
Reverse proxy je server, který stojí mezi návštěvníkem a cílovou aplikací nebo webovým serverem. Přijímá požadavky od uživatelů a následně je přeposílá na interní služby. Používá se téměř u všech moderních webových aplikací a serverových infrastruktur.
Jak reverse proxy funguje
Uživatel se připojí například na https://example.cz. Požadavek nejprve přijme reverse proxy server, například Nginx nebo Apache. Ten následně požadavek předá aplikaci běžící interně například na 127.0.0.1:3000 nebo docker-container:8080. Uživatel o tom vůbec neví — vidí pouze finální web.
Nejčastější využití
HTTPS a SSL certifikáty
Reverse proxy často řeší HTTPS komunikaci a SSL certifikáty pomocí Let’s Encrypt, TLS terminace a automatické obnovy certifikátů. Díky tomu aplikace sama nemusí řešit šifrování.
Proxy na interní aplikace
Například https://app.example.cz → localhost:3000
nebo https://api.example.cz → Docker container
Load balancing
Reverse proxy může rozdělovat provoz mezi více serverů. To pomáhá výkonu, dostupnosti a škálování aplikací.
Ochrana backendu
Interní aplikace nemusí být veřejně dostupné. Reverse proxy skryje interní infrastrukturu, filtruje provoz, může blokovat útoky a umožňuje rate limiting.
Reverse proxy a Docker
V Docker prostředí je reverse proxy velmi běžná.
Typický scénář:
Internet
↓
Nginx / Traefik
↓
Docker kontejnery
Například:
- frontend na portu 3000
- API na 8080
- databáze neveřejná
Vše běží za jednou veřejnou IP adresou.
Ukázka konfigurace v Nginxu
server {
server_name example.cz;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Výhody reverse proxy
- centralizované HTTPS
- jednodušší infrastruktura
- vyšší bezpečnost
- možnost cachování
- load balancing
- skrytí backendu
- jednodušší routing služeb
Shrnutí
Reverse proxy je klíčová součást moderních webových aplikací a serverové infrastruktury. Umožňuje bezpečně směrovat provoz, spravovat HTTPS, skrývat interní služby a zjednodušit provoz aplikací i Docker prostředí.