Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Proxy használata annak teszteléséhez, hogy az alkalmazás hogyan kezeli az API-hibákat
Mivel a továbbítási proxy minden olyan kérést lát, amelyet az alkalmazás küld, néhányat hibával is megválaszolhat a továbbítás helyett: egy 500, egy 429 Too Many Requests, Retry-After fejléccel, vagy egy 8 másodpercig tartó választ. Az alkalmazás továbbra is meghívja a valódi API-URL-címeket, így éles környezetben futtatva tesztelheti az alkalmazást, beleértve a HTTP-ügyfelet, az SDK-t és az újrapróbálkozási házirendet.
Az API-hibák tesztelésének egyéb módjaival összehasonlítva:
| Approach | Mit talál? | Ami hiányzik |
|---|---|---|
| Várjon az éles üzemre | Tényleges meghibásodások | Minden addig, amíg egy felhasználó rá nem kattint |
| Mockold az API-t a tesztjeidben, vagy hagyd, hogy a kódoló ügynök megírja a mockot | Hogy a hibaágak lefutnak-e | Az API valós állapotkódjai, fejlécei és hibatörzsei, valamint az SDK újrapróbálkozési szabályzata. Az alkalmazásnak egy csak tesztelési kapcsolóra is szüksége van a mock eléréséhez. |
| Hívja meg a valódi API-t, és remélje, hogy nem sikerül | Valós viselkedés | Nem lehet igény szerint hibát előidézni |
| Futtassa az alkalmazást egy hibákat szimuláló proxyn keresztül | Hibák, sebességkorlátozás és késés a valós URL-címeken igény szerint | A kódod elkülönítve van. Arra valók az egységtesztek. |
Fejlesztői proxy továbbítási proxyként fejlesztéshez és teszteléshez
Dev Proxy egy olyan forward proxy, amelyet a számítógépén vagy a CI-ben futtat az alkalmazásból érkező, az Ön által választott API-k felé irányuló kérések elfogásához és módosításához. 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 és a korlátozást.
- Megtudhatja, hogyan kezeli az alkalmazás a lassú API-kat.
- Mock API-k létrehozása kódsor írása nélkül.
- Kontextusfüggő útmutatást kaphat az API-k használatáról.
Ha azon az API-n szeretné kipróbálni, amelyet az alkalmazása hív, töltsön le egy előre beállított fájlt, és indítsa el vele a Dev Proxyt. Például a GitHub esetében:
devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"
Az OpenAI (openai-throttling), Anthropic (anthropic-throttling) és Microsoft Graph OneDrive és SharePoint végpontok (microsoft-graph-rate-limiting) esetében is elérhetők előre beállított beállítások.
Próbálja ki!
Válasszon egy olyan forgatókönyvet, amely megfelel az éppen létrehozott forgatókönyvnek:
- Annak tesztelése, hogy az alkalmazás hogyan kezeli az API-hibákat (5 perc)
- Sebességkorlátozás szimulálása bármely API-n (10 perc)
- API-válaszok szimulálása a kód módosítása nélkül (10 perc)
- Fejlesztés közben használjon helyi modellt OpenAI helyett (15 perc)