Skip to main content

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:8698").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_host_header_getter
Default host header getter.
default_url_path_getter
Default URL path getter.
default_url_query_getter
Default URL query getter. This getter returns the query string from the request URI.
preserve_original_host_header_getter
Preserve original host header getter. Propagates the original request host header to the proxied request.
standard_host_header_getter
Standards-compliant host header getter.

Type Aliases§

HostHeaderGetter
Host header getter. You can use this to get the host header for the proxied request.
UrlPartGetter
URL part getter. You can use this to get the proxied URL path or query.