| Crates.io | tokio-multi-proxy |
| lib.rs | tokio-multi-proxy |
| version | 0.1.2 |
| created_at | 2025-06-14 01:40:58.131374+00 |
| updated_at | 2025-06-14 02:10:56.519957+00 |
| description | A modular async proxy with TLS/mTLS and multiple transport support |
| homepage | https://github.com/ahmed-masud/tokio-multi-proxy |
| repository | https://github.com/ahmed-masud/tokio-multi-proxy |
| max_upload_size | |
| id | 1712027 |
| size | 40,865 |
An async, modular proxy with support for TCP, UDP, Unix sockets, TLS, and mutual TLS. Built on Tokio and Rustls.
Add to your Cargo.toml:
tokio-multi-proxy = { version = "0.1.0", features = ["tls", "mtls"] }
Or if using only TCP passthrough (no TLS):
tokio-multi-proxy = "0.1.0"
Run examples with:
cargo run --example tcp # plain TCP
cargo run --example udp # UDP
cargo run --example unix # Unix socket
cargo run --example tls --features tls # TLS
cargo run --example mtls --features mtls # mTLS
tokio_multi_proxy::start_tcp("0.0.0.0:8080", "127.0.0.1:9000").await?;
tokio_multi_proxy::start_tls_tcp("0.0.0.0:443", "127.0.0.1:8080", "cert.pem", "key.pem").await?;
tokio_multi_proxy::start_mtls_tcp("0.0.0.0:443", "127.0.0.1:8080", "cert.pem", "key.pem", "ca.pem").await?;
| Feature | Description |
|---|---|
passthrough |
Raw TCP proxying (default) |
tls |
TLS termination support |
mtls |
Mutual TLS (requires tls) |
Enable with:
cargo build --features tls
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout examples/key.pem -out examples/cert.pem \
-subj "/CN=localhost"
# Optional mTLS CA
cp examples/cert.pem examples/ca.pem
cargo doc --all-features --open
Licensed under either of:
Ahmed Masud — saf.ai
MIT/Apache dual-license. Contributions welcome!