Mi az a proxy?

A proxy egy közvetítő kiszolgáló, amely egy ügyfél (például az alkalmazás) és a célkiszolgáló (például egy háttér API) között helyezkedik el. Amikor az alkalmazás kérést küld, a proxy kapja meg először. A proxy ezután továbbíthatja a kérést a célkiszolgálónak, módosíthatja, letilthatja vagy közvetlenül visszaadhatja a választ.

Röviden: a proxy az ügyfél vagy a kiszolgáló nevében jár el a kommunikáció közvetítése érdekében.

A proxy működése

A proxyk HTTP-szinten (vagy más alkalmazásprotokollokon) működnek a bejövő kérések fogadásával és az alábbi műveletek közül egy vagy több végrehajtásával:

  • A kérés továbbítása a célkiszolgálóra, majd a válasz visszahelyezése az ügyfélnek.
  • A fejlécek, URL-címek vagy hasznos adatok módosítása továbbítás előtt.
  • A kérés helyi elfogása és megválaszolása a célkiszolgálóval való kapcsolatfelvétel nélkül.
  • A kérés elutasítása szabályok vagy hozzáférési szabályzatok alapján.

Az ügyfél szempontjából egyszerűen elküld egy kérést egy URL-címre. A proxy minden mást kezel a színfalak mögött. Az mintázat az ügyfélről a proxyra, majd a célkiszolgálóra irányul.

Ez a minta egy szabályozási és absztrakciós réteget vezet be, amellyel javíthatja a biztonságot, a megfigyelhetőséget, a teljesítményt és a tesztelhetőséget.

Proxyk típusai

Különböző típusú proxyk léteznek. Mindegyik megfelel a rendszerarchitektúra adott szerepköreinek.

Proxy továbbítása

Egy előremutató proxy található az ügyfél előtt. Amikor az alkalmazás kérést küld, az áthalad a proxyn, amely eldönti, hogy az alkalmazás továbbítható-e és hogyan. A továbbítási proxykat általában a következőkre használják:

  • A külső erőforrásokhoz való hozzáférés szabályozása.
  • Az ügyfélforgalom anonimizálása.
  • Naplózza a kimenő forgalmat a figyeléshez.
  • Tartalomszűrés vagy átalakítás alkalmazása.

Fordított proxy

A fordított proxy a kiszolgáló előtt helyezkedik el. Az ügyfelek nem ismerik az alapul szolgáló háttér-infrastruktúrát. A fordított proxy fogadja a bejövő kéréseket, és továbbítja őket a háttérkiszolgálók egyikének. A fordított proxykat általában a következőkre használják:

  • A terheléselosztás több szolgáltatás forgalmát is kiegyensúlyozza.
  • Gyorsítótárazott válaszok kiszolgálása a háttérrendszer terhelésének csökkentése érdekében.
  • TLS-/SSL-kapcsolatok leállása.
  • Belső szolgáltatásadatok elrejtése a nyilvános internetről.

Átlátszó proxy

A transzparens proxy anélkül irányítja le a forgalmat, hogy az ügyfél kifejezetten konfigurálva lenne a használatára. Ezt a típust vállalati vagy internetszolgáltatói környezetekben használják a szabályzatok kikényszerítésére vagy a használat figyelésére.

Miért fontosak a proxyk az alkalmazásfejlesztők számára?

Gyakran az infrastruktúra vagy a hálózati csapatok kezelik a proxykat. A proxyk azonban közvetlenül befolyásolják az alkalmazás viselkedését, különösen a fejlesztési és tesztelési környezetekben. Az alábbiakban néhány gyakorlati módszert talál, amelyek hatással vannak a mindennapi munkájára.

Hibakeresés és megfigyelhetőség

A proxyk képesek a HTTP-forgalom rögzítésére és vizsgálatára. Az olyan eszközök, mint a Dev Proxy, a Fiddler, a Proxyman, a Charles Proxy vagy a mitmproxy, helyi továbbítási proxyként működnek. Futtathatja rajtuk keresztül az alkalmazást a kérések és válaszok elemzéséhez, a hibák kiszúrásához, valamint a fejlécek vagy hitelesítési jogkivonatok ellenőrzéséhez.

API-átjáró és útválasztás

Számos termelési rendszerben az alkalmazás háttérrendszerére irányuló forgalom API-átjárón vagy fordított proxyn (például NGINX) vagy felhőalapú szolgáltatáson, mint az Azure API Management, keresztül van irányítva. Ezek a proxyk kezelik az útválasztást, a hitelesítést, a sebességkorlátozást és egyebeket.

Az API tervezésekor vagy az elosztott szolgáltatások létrehozásakor tisztában kell lennie azzal, hogy a proxyk hogyan befolyásolják a fejléceket (például X-Forwarded-Foraz időtúllépéseket és a kérelmek méretkorlátjait).

CORS és helyi fejlesztés

A helyi fejlesztés során, különösen a webalkalmazásokban, előfordulhat, hogy a böngészőből származó API-k meghívásakor a forrásközi erőforrás-megosztás (CORS) korlátozásai lépnek fel. A fejlesztési proxy továbbíthatja a kéréseket a cél API-nak, miközben átírja a fejléceket a CORS-korlátozások megkerülése érdekében. A CORS-kérelmeket átíró fejlesztői eszközök gyakori példái a vite, webpack-dev-servervagy egyéni proxyközvetítmények az Express vagy a ASP.NET Core keretrendszerekben.

Szolgáltatásvirtualizálás és tesztelés

A proxyk képesek szimulálni a háttér API-kat. Ez a funkció akkor hasznos, ha a valós szolgáltatás nem érhető el, instabil vagy költséges a tesztelés során. A válaszok elfogásával és kipockázásával tesztelheti az alkalmazás viselkedését különböző helyzetekben, például időtúllépések, hibák vagy helytelenül formázott adatok esetén.

Az integrációs és a végpontok közötti tesztek során gyakran használják erre a célra az olyan eszközöket, mint a Dev Proxy vagy az egyéni proxy implementációk.

Hitelesítés és biztonság

A proxyk gyakran az alkalmazások védelmének frontvonalát képezik. Kényszeríthetik a hozzáférés-vezérlést, beszúrhatják a hitelesítési fejléceket, vagy megszakíthatják a TLS-/SSL-kapcsolatokat. Fejlesztőként fontos tisztában lenni azzal, hogy az alkalmazás hogyan viselkedik, amikor proxy mögött ül, és hogyan férhet hozzá a hitelesítési vagy identitásadatokat tartalmazó fejlécekhez.

A gyakori szempontok a fejlécekkel és a proxykkal kapcsolatban

Amikor egy kérelem áthalad egy proxyn, a rendszer hozzáad vagy módosít bizonyos fejléceket a fontos metaadatok megőrzése érdekében. Például:

  • X-Forwarded-For: Az ügyfél eredeti IP-címét jelzi.
  • X-Forwarded-Proto: Az eredeti protokollt (HTTP vagy HTTPS) jelzi.
  • X-Forwarded-Host: Az ügyfél által megadott eredeti kiszolgálót jelzi.

Ha az alkalmazás fordított proxy mögött fut, győződjön meg arról, hogy a keretrendszer vagy a platform úgy van konfigurálva, hogy megbízható legyen, és megfelelően értelmezze ezeket a fejléceket.

Fejlesztői proxy továbbítási proxyként fejlesztéshez és teszteléshez

A fejlesztői proxy egy olyan továbbítási proxy, amellyel elfoghatja és módosíthatja az alkalmazástól érkező kéréseket bármely célkiszolgálóra. A Dev Proxyval a következőt teheti:

  • Megtudhatja, hogyan reagál az alkalmazás az API-hibákra.
  • Ellenőrizze, hogy az alkalmazás hogyan kezeli az API-sebességkorlátokat.
  • Megtudhatja, hogyan kezeli az alkalmazás a lassú API-kat.
  • Kód írása nélkül gyorsan állítsa fel az ál-API-kat.
  • Az API-k használatának kontextusalapú útmutatásával javíthatja az alkalmazást.

Próbálja ki!

Válasszon egy olyan forgatókönyvet, amely megfelel az éppen létrehozott forgatókönyvnek:

Következő lépés