Επισκόπηση του YARP
Το YARP (Yet Another Reverse Proxy) είναι μια εξαιρετικά προσαρμόσιμη βιβλιοθήκη αντίστροφου διακομιστή μεσολάβησης για .NET — σχεδιασμένη να είναι στιβαρή, ευέλικτη, επεκτάσιμη, ασφαλής και εύκολη στην εκτέλεση μπροστά από τις υπηρεσίες που ήδη διαθέτετε.
Εισαγωγή
Το YARP βοηθά τους προγραμματιστές να δημιουργήσουν ισχυρές και αποδοτικές λύσεις αντίστροφου διακομιστή μεσολάβησης, προσαρμοσμένες στις συγκεκριμένες ανάγκες τους. Τοποθετείται ανάμεσα στις συσκευές των client και τους διακομιστές backend, προωθώντας τα αιτήματα των client στον κατάλληλο προορισμό και επιστρέφοντας την απόκριση — τον ίδιο ρόλο που παίζουν το nginx ή το Envoy, αλλά ως βιβλιοθήκη που φιλοξενείτε μέσα στη δική σας διεργασία ASP.NET Core.
Τι κάνει ένας αντίστροφος διακομιστής μεσολάβησης
Ένας αντίστροφος διακομιστής μεσολάβησης προσφέρει αρκετά οφέλη πέρα από ένα απλό backend:
- Δρομολόγηση — κατευθύνει τα αιτήματα σε διαφορετικούς διακομιστές backend με βάση προκαθορισμένους κανόνες, όπως μοτίβα URL ή κεφαλίδες αιτήματος. Τα
/images,/apiκαι/dbμπορούν το καθένα να δρομολογηθούν σε διαφορετικό διακομιστή. - Εξισορρόπηση φορτίου — κατανέμει την εισερχόμενη κυκλοφορία σε πολλαπλούς διακομιστές backend, ώστε να αποφεύγεται η υπερφόρτωση οποιουδήποτε από αυτούς.
- Επεκτασιμότητα — διακομιστές backend μπορούν να προστεθούν ή να αφαιρεθούν χωρίς να επηρεαστεί ο client, καθώς η κυκλοφορία κατανέμεται από τον διακομιστή μεσολάβησης.
- Τερματισμός TLS — μεταφέρει την κρυπτογράφηση και την αποκρυπτογράφηση εκτός των διακομιστών backend, μειώνοντας το φόρτο εργασίας τους.
- Ασφάλεια — τα εσωτερικά endpoints υπηρεσιών παραμένουν κρυμμένα από εξωτερική έκθεση, μειώνοντας την επιφάνεια επίθεσης.
Πώς ένας αντίστροφος διακομιστής μεσολάβησης χειρίζεται το HTTP
Οι εισερχόμενες συνδέσεις τερματίζονται στον διακομιστή μεσολάβησης· για τα εξερχόμενα αιτήματα προς τους προορισμούς χρησιμοποιούνται νέες, ομαδοποιημένες (pooled) συνδέσεις. Με βάση τους διαμορφωμένους κανόνες δρομολόγησης, το YARP καθορίζει ποιο cluster πρέπει να χειριστεί το αίτημα, το προωθεί — μετασχηματίζοντας τη διαδρομή (path) και τις κεφαλίδες όπου χρειάζεται — και αναμεταδίδει την απόκριση του backend πίσω στον client.
Σύντομο παράδειγμα
Καταχωρίστε τον διακομιστή μεσολάβησης και φορτώστε διαδρομές και clusters απευθείας από τη διαμόρφωση.
C#using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddReverseProxy()
.LoadFromConfig(builder.Configuration.GetSection("ReverseProxy"));
var app = builder.Build();
app.MapReverseProxy();
app.Run();JSON{
"ReverseProxy": {
"Routes": {
"route1": {
"ClusterId": "cluster1",
"Match": { "Path": "{**catch-all}" }
}
},
"Clusters": {
"cluster1": {
"Destinations": {
"cluster1/destination1": { "Address": "https://example.com/" }
}
}
}
}
}Η διαμόρφωση επαναφορτώνεται αυτόματα όταν αλλάζει η πηγή — δεν απαιτείται επανεκκίνηση. Δείτε Φίλτρα διαμόρφωσης για να τροποποιήσετε τη διαμόρφωση κατά τη διάρκεια της ακολουθίας φόρτωσης.
Γιατί να επιλέξετε το YARP έναντι άλλων αντίστροφων διακομιστών μεσολάβησης
Το YARP είναι χτισμένο πάνω στο ASP.NET Core, οπότε ενσωματώνεται απευθείας με το οικοσύστημα του .NET και σας προσφέρει ένα πλούσιο σύνολο σημείων επεκτασιμότητας — η δρομολόγηση, η εξισορρόπηση φορτίου και οι μετασχηματισμοί μπορούν όλα να προσαρμοστούν σε οικεία C#, αντί για μια γλώσσα διαμόρφωσης ειδική για proxy. Συντηρείται ενεργά από τη Microsoft, και τόσο το YARP όσο και η τεκμηρίωσή του είναι ανοιχτού κώδικα.