Reverse Proxy
Ein Reverse Proxy ist eine Server-Architektur, die Anfragen von Clients empfängt und an einen oder mehrere Backend-Server weiterleitet. Im Gegensatz zu einem Forward Proxy (der für Clients arbeitet) agiert der Reverse Proxy auf der Serverseite.
Die Hauptvorteile eines Reverse Proxys:
- Lastverteilung: Verteilung von Anfragen auf mehrere Server
- Erhöhte Sicherheit: Verbergen der echten Serverinformationen
- Inhalts-Caching: Verbesserte Leistung
- Pfad-Umschreibung und -Weiterleitung: Flexible Anfragen-Routing
Das Salvo-Framework bietet Middleware für Reverse-Proxy-Funktionalitäten.
Beispielcode
use salvo::prelude::*;
use salvo::proxy::Proxy;
#[tokio::main]
async fn main() {
tracing_subscriber::fmt().init();
let router = Router::new()
.push(
Router::new()
.path("google/{**rest}")
.handle(Proxy::<Vec<&str>>::new(vec!["https://www.google.com"])),
)
.push(
Router::new()
.path("baidu/{**rest}")
.handle(Proxy::<Vec<&str>>::new(vec!["https://www.baidu.com"])),
);
let acceptor = TcpListener::new("127.0.0.1:5800").bind().await; Server::new(acceptor).serve(router).await;
}