Crate salvo_proxy

Crate salvo_proxy 

Source
Expand description

Provide HTTP proxy capabilities for the Salvo web framework.

This crate allows you to easily forward requests to upstream servers, supporting both HTTP and HTTPS protocols. It’s useful for creating API gateways, load balancers, and reverse proxies.

§Example

In this example, requests to different hosts are proxied to different upstream servers:

use salvo_core::prelude::*;
use salvo_proxy::Proxy;

#[tokio::main]
async fn main() {
    let router = Router::new()
        .push(
            Router::new()
                .host("127.0.0.1")
                .path("{**rest}")
                .goal(Proxy::use_hyper_client("https://www.rust-lang.org")),
        )
        .push(
            Router::new()
                .host("localhost")
                .path("{**rest}")
                .goal(Proxy::use_hyper_client("https://crates.io")),
        );

    let acceptor = TcpListener::new("0.0.0.0:5800").bind().await;
    Server::new(acceptor).serve(router).await;
}

Structs§

HyperClienthyper-client
A Client implementation based on hyper_util::client::legacy::Client.
Proxy
Handler that can proxy request to other server.
ReqwestClientreqwest-client
A Client implementation based on reqwest::Client.
UnixSockClientunix-sock-client
A client that creates a direct bidirectional channel (TCP tunnel) to a Unix socket.

Traits§

Client
Client trait for implementing different HTTP clients for proxying.
Upstreams
Upstreams trait for selecting target servers.

Functions§

default_url_path_getter
Default url path getter.
default_url_query_getter
Default url query getter. This getter just return the query string from request uri.

Type Aliases§

UrlPartGetter
Url part getter. You can use this to get the proxied url path or query.