Dela via


Vad är en proxy?

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 fånga upp och håna svar kan du testa programmets beteende i olika scenarier, till exempel tidsgränser, 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 den främsta försvarslinjen för 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.

Dev Proxy som en framåtriktad proxy för utveckling och testning

Dev Proxy är en forwardproxy som du kan använda för att fånga upp och ändra begäranden från din applikation till valfri målserver. Med Dev Proxy kan du:

  • Se hur din app svarar på API-fel.
  • Kontrollera hur din app hanterar API-hastighetsgränser.
  • Se hur din app hanterar långsamma API:er.
  • Ställ snabbt upp falska API:er utan att skriva en kodrad.
  • Förbättra din app med sammanhangsberoende vägledning om hur du använder API:er.

Nästa steg