Proxy inverse

Un proxy inverse est une architecture serveur qui reçoit les requêtes des clients et les transmet à un ou plusieurs serveurs backend. Contrairement au proxy direct (qui représente le client), le proxy inverse fonctionne du côté serveur.

Les principaux avantages du proxy inverse :

  • Répartition de charge : distribue les requêtes sur plusieurs serveurs
  • Sécurité renforcée : masque les informations du serveur réel
  • Mise en cache du contenu : améliore les performances
  • Réécriture et redirection des chemins : route les requêtes avec flexibilité

Le framework Salvo fournit un middleware avec fonctionnalité de proxy inverse.

Exemple de code

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;
}