Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
En proxy är en mellanliggande server som finns mellan en klient (till exempel ditt program) och en målserver (till exempel ett serverdels-API). När ditt program skickar en begäran tar proxyn emot den först. Proxyn kan sedan vidarebefordra begäran till målservern, ändra den, blockera den eller returnera ett svar direkt.
I korthet agerar en proxy för antingen klienten eller servern för att förmedla kommunikation.
Så här fungerar en proxy
Proxyservrar fungerar på HTTP-nivå (eller andra programprotokoll) genom att ta emot inkommande begäranden och vidta en eller flera av följande åtgärder:
- Vidarebefordra begäran till målservern och vidarebefordra sedan svaret till klienten igen.
- Ändrar-huvuden, URL:er eller nyttolast innan vidarebefordring.
- Avlyssna och svara på begäran lokalt utan att kontakta målservern.
- Avvisa begäran baserat på regler eller åtkomstprinciper.
Från klientens perspektiv skickar den helt enkelt en begäran till en URL. Proxyn hanterar allt annat i bakgrunden. Mönstret är från klient till proxy till målserver.
Det här mönstret introducerar ett lager av kontroll och abstraktion som du kan använda för att förbättra säkerhet, observerbarhet, prestanda och testbarhet.
Typer av proxyservrar
Det finns olika typer av proxyservrar. Var och en passar för specifika roller i systemarkitekturen.
Framåtriktad proxy
En vidarebefordrad proxy finns framför -klienten. När programmet gör en begäran går det via proxyn, som avgör om och hur det ska vidarebefordras. Framåtproxytjänster används ofta för att:
- Kontrollera åtkomsten till externa resurser.
- Anonymisera klienttrafik.
- Logga utgående trafik för övervakning.
- Använd innehållsfiltrering eller transformering.
Omvänd proxy
En omvänd proxy finns framför -servern. Klienterna känner inte till den underliggande backend-infrastrukturen. Den omvända proxyn tar emot inkommande begäranden och vidarebefordrar dem till en av flera backend-servrar. Omvända proxyservrar används ofta för att:
- Belastningsutjämning av trafik mellan flera tjänster.
- Tillhandahåll cachelagrade svar för att minska belastningen på backend.
- Avsluta TLS/SSL-anslutningar.
- Dölj intern tjänstinformation från det offentliga Internet.
Transparent proxynätverk
En transparent proxy fångar upp trafik utan att klienten uttryckligen konfigureras att använda den. Den här typen används i företags- eller Internettjänstprovidermiljöer för att framtvinga principer eller övervaka användning.
Varför proxyservrar är viktiga för programutvecklare
Ofta hanterar infrastruktur- eller nätverksteam proxyservrar. Proxyservrar påverkar dock direkt programmets beteende, särskilt i utvecklings- och testmiljöer. Här följer några praktiska sätt att påverka ditt dagliga arbete.
Felsökning och observerbarhet
Proxyservrar kan samla in och inspektera HTTP-trafik. Verktyg som Dev Proxy, Fiddler, Proxyman, Charles Proxy eller mitmproxy fungerar som lokala proxyservrar. Du kan köra din applikation genom dem för att analysera begäranden och svar, upptäcka fel, och verifiera huvuden eller autentiseringstokens.
API-gateway och routning
I många produktionssystem dirigeras trafik till programmets serverdel via en API-gateway eller omvänd proxy, till exempel NGINX eller en molnbaserad tjänst som Azure API Management. Dessa proxyservrar hanterar routning, autentisering, hastighetsbegränsning med mera.
När du utformar ditt API eller skapar distribuerade tjänster måste du förstå hur proxyservrar påverkar rubriker (till exempel X-Forwarded-For), tidsgränser och storleksbegränsningar för begäranden.
CORS och lokal utveckling
Under lokal utveckling, särskilt i webbprogram, kan du stöta på cors-begränsningar (cross-origin resource sharing) när du anropar API:er från webbläsaren. En utvecklingsproxy kan vidarebefordra dina begäranden till mål-API:et medan den skriver om rubriker för att kringgå CORS-begränsningar. Vanliga exempel på utvecklarverktyg som skriver om CORS-begäranden är vite, webpack-dev-servereller anpassade proxymellanprogram i ramverk som Express eller ASP.NET Core.
Tjänstvirtualisering och testning
Proxyservrar kan simulera serverdels-API:er. Den här funktionen är användbar när den verkliga tjänsten inte är tillgänglig, instabil eller dyr att använda under testningen. Genom att intercepta och mocka svar kan du testa applikationens beteende i olika scenarier, till exempel timeouter, fel eller felaktiga data.
Verktyg som Dev Proxy eller anpassade proxyimplementeringar används ofta för detta ändamål i integrerings- och slutpunkt-till-slutpunkt-tester.
Autentisering och säkerhet
Proxyservrar är ofta försvarsfronten när det gäller att skydda program. De kan framtvinga åtkomstkontroller, mata in autentiseringshuvuden eller avsluta TLS/SSL-anslutningar. Som utvecklare är det viktigt att vara medveten om hur ditt program beter sig när det finns bakom en proxy och hur du får åtkomst till rubriker som innehåller autentiserings- eller identitetsinformation.
Vanliga rubriker och proxyöverväganden
När en begäran skickas via en proxyserver läggs vissa huvuden till eller ändras för att bevara viktiga metadata. Till exempel:
-
X-Forwarded-For: Anger klientens ursprungliga IP-adress. -
X-Forwarded-Proto: Anger det ursprungliga protokollet (HTTP eller HTTPS). -
X-Forwarded-Host: Anger den ursprungliga värd som begärdes av klienten.
När din applikation exekveras bakom en omvänd proxy, säkerställ att ditt ramverk eller din plattform är konfigurerad att lita på och tolka dessa headers korrekt.
Använd en proxy för att testa hur din app hanterar API-fel
Eftersom en forward proxy ser varje begäran som appen skickar kan den även besvara vissa av dem med ett fel i stället för att vidarebefordra dem: en 500, en 429 Too Many Requests med en Retry-After-rubrik eller ett svar som tar 8 sekunder. Appen anropar de verkliga API-URL:erna hela tiden, så du testar appen när den körs i produktion, inklusive dess HTTP-klient, SDK och återförsöksprincip.
Jämfört med andra sätt att testa API-fel:
| Approach | Det här hittar du | Vad du saknar |
|---|---|---|
| Vänta på bearbetning | Faktiska fel | Allt, tills en användare trycker på den |
| Mocka API:et i dina tester eller låt kodningsagenten skriva mocken | Huruvida dina felgrenar körs | API:ets verkliga statuskoder, rubriker och felkroppar samt SDK:ns återförsöksprincip. Din app behöver också en testflagga för att nå mocken. |
| Anropa det verkliga API:et och hoppas att det misslyckas | Faktiskt beteende | Du kan inte orsaka ett fel på begäran |
| Kör din app via en proxy som simulerar fel | Fel, strypning och svarstid på de verkliga URL:erna på begäran | Din kod för sig. Spara enhetstesterna till det. |
Dev Proxy som en framåtriktad proxy för utveckling och testning
Dev Proxy är en vidarebefordranproxy som du kör på datorn eller i CI för att fånga upp och ändra begäranden från ditt program till de API:er du väljer. Med Dev Proxy kan du:
- Se hur din app svarar på API-fel.
- Kontrollera hur din app hanterar API-hastighetsbegränsningar och strypning.
- Se hur din app hanterar långsamma API:er.
- Ställ upp mock-API:er utan att skriva en kodrad.
- Få sammanhangsberoende vägledning om hur du använder API:er.
Om du vill prova det mot API:et som appen anropar laddar du ned en förinställning och startar Dev Proxy med den. Till exempel för GitHub:
devproxy config get github-rate-limiting
devproxy --config-file "~dataFolder/configs/github-rate-limiting/.devproxy/devproxyrc.json"
Förinställningar är också tillgängliga för OpenAI (openai-throttling), Anthropic (anthropic-throttling) och Microsoft Graph OneDrive och SharePoint slutpunkter (microsoft-graph-rate-limiting).
Prova själv
Välj ett scenario som matchar det du skapar:
- Testa hur din app hanterar API-fel (5 minuter)
- Simulera frekvensbegränsning på valfritt API (10 minuter)
- Falska API-svar utan att ändra din kod (10 minuter)
- Använd en lokal modell i stället för OpenAI när du utvecklar (15 minuter)