Condividi tramite


Panoramica di YARP

Introduzione a YARP

YARP (Yet Another Reverse Proxy) è una libreria proxy inverso altamente personalizzabile per .NET. È progettato per offrire un framework proxy affidabile, flessibile, scalabile, sicuro e facile da usare. YARP consente agli sviluppatori di creare soluzioni proxy inversa potenti ed efficienti personalizzate in base alle esigenze specifiche.

Che cosa fa un proxy inverso

Un proxy inverso è un server che si trova tra i dispositivi client e i server back-end. Inoltra le richieste client al server back-end appropriato e quindi restituisce la risposta del server al client. Un proxy inverso offre diversi vantaggi:

  • Routing: indirizza le richieste a server back-end diversi in base a regole predefinite, ad esempio modelli di URL o intestazioni di richiesta. Ad esempio, /imagesle richieste , /apie /db possono essere indirizzate a server di immagine, API e database.
  • Bilanciamento del carico: distribuisce il traffico in ingresso tra più server back-end per impedire l'overload di un server specifico. La distribuzione aumenta le prestazioni e l'affidabilità.
  • Scalabilità: distribuendo il traffico tra più server, un proxy inverso consente di ridimensionare le app per gestire più utenti e carichi più elevati. I server back-end sono stati ridimensionati (aggiunti o rimossi) senza influire sul client.
  • terminazione SSL/TLS: scarica i processi di crittografia e decrittografia TLS dai server back-end, riducendo il carico di lavoro.
  • Astrazione della connessione, disaccoppiamento e controllo sullo spazio URL: le richieste in ingresso da client esterni e risposte in uscita dal back-end sono indipendenti. Questa indipendenza consente di:
    • Versioni di HTTP, ie, HTTP/1.1, HTTP/2, HTTP/3. Il proxy può aggiornare o effettuare il downgrade delle versioni HTTP.
    • Durate delle connessioni, che consentono di avere connessioni di lunga durata nel back-end mantenendo connessioni client brevi.
    • Controllo sullo spazio URL: gli URL in ingresso possono essere trasformati prima dell'inoltro al back-end. In questo modo gli URL esterni vengono astratti dal modo in cui vengono mappati ai servizi interni. Gli endpoint di servizio interni possono cambiare senza influire sugli URL esterni.
  • Sicurezza: gli endpoint di servizio interni possono essere nascosti dall'esposizione esterna, proteggendo da alcuni tipi di attacchi informatici, ad esempio attacchi DDoS.
  • Memorizzazione nella cache: le risorse richieste di frequente possono essere memorizzate nella cache per ridurre il carico nei server back-end e migliorare i tempi di risposta.
  • Controllo delle versioni: è possibile supportare versioni diverse di un'API usando mapping URL diversi.
  • Manutenzione semplificata: i proxy inversi possono gestire terminazione SSL/TLS e altre attività, semplificando la configurazione e la manutenzione dei server back-end. Ad esempio, i certificati SSL e i criteri di sicurezza possono essere gestiti a livello di proxy inverso anziché in ogni singolo server.

Come un proxy inverso gestisce HTTP

Un proxy inverso gestisce le richieste HTTP e le risposte nel modo seguente:

  • Ricezione di richieste: il proxy inverso è in ascolto su porte e endpoint specificati per le richieste HTTP in ingresso dai client.
  • Terminazione delle connessioni: le connessioni HTTP in ingresso vengono terminate nel proxy e vengono usate nuove connessioni per le richieste in uscita verso le destinazioni.
  • Richieste di routing: in base a regole e configurazioni di routing predefinite, il proxy inverso determina quale server back-end o cluster di server deve gestire la richiesta.
  • Richieste di inoltro: il proxy inverso inoltra la richiesta client al server back-end appropriato, trasformando il percorso e le intestazioni in base alle esigenze.
  • Pool di connessioni: le connessioni in uscita vengono raggruppate per ridurre il sovraccarico di connessione e sfruttare al massimo il riutilizzo HTTP 1.1 e le richieste parallele con HTTP/2 e HTTP/3.
  • Elaborazione delle risposte: il server back-end elabora la richiesta e invia una risposta al proxy inverso.
  • Restituzione di risposte: il proxy inverso riceve la risposta dal server back-end e la inoltra al client, eseguendo tutte le trasformazioni di risposta necessarie.

Questo processo garantisce che il client interagisca con il proxy inverso anziché direttamente con i server back-end, offrendo i vantaggi del bilanciamento del carico, sicurezza, controllo delle versioni e altro ancora.

Perché scegliere YARP rispetto ad altri proxy

YARP offre diversi vantaggi unici che lo rendono una scelta interessante per gli sviluppatori:

  • Personalizzazione: YARP è altamente personalizzabile, consentendo agli sviluppatori di personalizzare il proxy in base alle esigenze specifiche con il minimo sforzo.
  • Integrazione con .NET: basata su ASP.NET Core, YARP si integra perfettamente con l'ecosistema .NET, rendendola una scelta ideale per gli sviluppatori .NET.
  • Estendibilità: YARP offre un set completo di punti di estendibilità, consentendo agli sviluppatori di aggiungere logica e funzionalità personalizzate in base alle esigenze, usando codice C# familiare.
  • Scalabilità: l'opzione di estensibilità diretta per l'inoltro consente a YARP di scalare per supportare la scalabilità del nome di dominio e del back-end che non sono fattibili con la maggior parte dei proxy inversi.
  • Sviluppo attivo: YARP è attivamente gestito e sviluppato da Microsoft, assicurandosi che rimanga aggiornato up-tocon le tecnologie e le procedure consigliate più recenti.
  • Documentazione gestita completa: YARP include una documentazione completa ed esempi che semplificano l'introduzione e l'implementazione di funzionalità avanzate.
  • open source. YARP e la documentazione YARP sono open source. Contributi, recensioni e feedback sono i benvenuti.