Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Proxy server je zprostředkující server, který se nachází mezi klientem (například vaší aplikací) a cílovým serverem (například back-endovým rozhraním API). Když vaše aplikace odešle požadavek, proxy ho nejprve přijme. Proxy server pak může požadavek předat cílovému serveru, upravit ho, zablokovat nebo vrátit odpověď přímo.
Stručně řečeno, proxy funguje jménem klienta nebo serveru ke zprostředkování komunikace.
Jak funguje proxy server
Proxy servery pracují na úrovni HTTP (nebo jiných aplikačních protokolech) příjmem příchozích požadavků a provedením jedné nebo více následujících akcí:
- Předání požadavku na cílový server a následné předání odpovědi zpět klientovi.
- Úprava hlaviček, adres URL nebo datových částí před předáním
- Zachycování požadavku a odpovídání na ně místně bez kontaktování cílového serveru.
- Odmítnutí žádosti na základě pravidel nebo zásad přístupu
Z pohledu klienta jednoduše odesílá požadavek na adresu URL. Proxy zpracovává všechno ostatní na pozadí. Vzor je klient pro proxy server na cílový server.
Tento model představuje vrstvu řízení a abstrakce, kterou můžete použít ke zlepšení zabezpečení, pozorovatelnosti, výkonu a testovatelnosti.
Typy proxy serverů
Existují různé typy proxy serverů. Každá z nich je vhodná pro konkrétní role v systémové architektuře.
Proxy server pro přesměrování
Před klientem se nachází zprostředkovatelský proxy server. Když vaše aplikace vytvoří požadavek, prochází proxy serverem, který rozhoduje, jestli a jak ho předat. Předávání proxy serverů se běžně používá k:
- Řízení přístupu k externím prostředkům
- Anonymizovat klientský provoz.
- Protokolování odchozího provozu pro monitorování
- Použití filtrování nebo transformace obsahu
Reverzní proxy server
Reverzní proxy server se nachází před serverem . Klienti si nejsou vědomi základní back-endové infrastruktury. Reverzní proxy přijímá příchozí požadavky a předává je na jeden z několika back-endových serverů. Reverzní proxy servery se běžně používají k:
- Vyrovnávání zatížení provozu napříč několika službami
- Obsluha odpovědí uložených v mezipaměti za účelem snížení zatížení back-endu
- Ukončete připojení TLS/SSL.
- Skryjte interní podrobnosti služby z veřejného internetu.
Transparentní proxy server
Transparentní proxy server zachytí provoz, aniž by ho explicitně nakonfiguroval klient. Tento typ se používá v prostředích poskytovatelů firemních nebo internetových služeb k vynucení zásad nebo monitorování využití.
Proč proxy servery záleží na vývojářích aplikací
Provozování proxy serverů často zajišťují infrastruktura nebo síťové týmy. Proxy servery však přímo ovlivňují chování aplikací, zejména ve vývojových a testovacích prostředích. Tady je několik praktických způsobů, jak ovlivňují každodenní práci.
Ladění a pozorovatelnost
Proxy servery můžou zaznamenávat a kontrolovat provoz HTTP. Nástroje jako Dev Proxy, Fiddler, Proxyman, Charles Proxy nebo mitmproxy fungují jako místní proxy servery. Aplikaci můžete spustit prostřednictvím nich, abyste mohli analyzovat požadavky a odpovědi, odhalit chyby a ověřit hlavičky nebo ověřovací tokeny.
Brána rozhraní API a směrování
V mnoha produkčních systémech se provoz do back-endu vaší aplikace směruje přes bránu rozhraní API nebo reverzní proxy server, jako je NGINX nebo cloudová nativní služba, jako je Azure API Management. Tyto proxy servery zpracovávají směrování, ověřování, omezování rychlosti a další.
Při návrhu rozhraní API nebo vytváření distribuovaných služeb musíte pochopit, jak proxy ovlivňují hlavičky (například X-Forwarded-For
), vypršení časového limitu a omezení velikosti požadavků.
CORS a místní vývoj
Během místního vývoje, zejména ve webových aplikacích, můžete při volání rozhraní API z prohlížeče narazit na omezení sdílení prostředků mezi zdroji (CORS). Vývojový proxy server může předávat vaše požadavky cílovému rozhraní API, zatímco přepisuje hlavičky, aby obešla omezení CORS. Mezi běžné příklady vývojářských nástrojů, které přepisují požadavky CORS, patří vite
, webpack-dev-server
nebo vlastní middleware proxy v architekturách, jako je Express nebo ASP.NET Core.
Virtualizace a testování služeb
Proxy servery můžou simulovat back-endová rozhraní API. Tato funkce je užitečná v případě, že skutečná služba není dostupná, nestabilní nebo nákladná při testování. Zachycením a napodobováním odpovědí můžete otestovat chování aplikace v různých scénářích, jako jsou vypršení časového limitu, chyby nebo poškozená data.
Nástroje, jako jsou dev proxy nebo vlastní implementace proxy serveru, se běžně používají pro tento účel při integraci a kompletních testech.
Ověřování a zabezpečení
Proxy servery jsou často front-line obrany při zabezpečení aplikací. Můžou vynucovat řízení přístupu, vkládat hlavičky ověřování nebo ukončovat připojení TLS/SSL. Jako vývojář je důležité vědět, jak se vaše aplikace chová, když se nachází za proxy serverem a jak získat přístup k hlavičce, které obsahují informace o ověřování nebo identitě.
Běžné úvahy o hlavičkách a proxy
Když požadavek projde proxy serverem, určité hlavičky se přidají nebo upraví, aby se zachovala důležitá metadata. Například:
-
X-Forwarded-For
: Označuje původní IP adresu klienta. -
X-Forwarded-Proto
: Označuje původní protokol (HTTP nebo HTTPS). -
X-Forwarded-Host
: Označuje původního hostitele požadovaného klientem.
Pokud vaše aplikace běží za reverzním proxy serverem, ujistěte se, že je vaše architektura nebo platforma nakonfigurovaná tak, aby důvěřovala a interpretovala tyto hlavičky správně.
Vývojový proxy server jako předávaný proxy server pro vývoj a testování
Dev Proxy je předávací proxy server, který můžete použít k zachycení a úpravě požadavků z vaší aplikace na libovolný cílový server. Pomocí Dev Proxy můžete:
- Podívejte se, jak vaše aplikace reaguje na chyby rozhraní API.
- Ověřte, jak vaše aplikace zpracovává limity rychlosti rozhraní API.
- Podívejte se, jak vaše aplikace zpracovává pomalé rozhraní API.
- Rychle vytvořit API bez psaní jediného řádku kódu.
- Vylepšete aplikaci pomocí kontextových pokynů k používání rozhraní API.