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í.