forked for experiment
Find a file
2022-07-27 21:47:28 +09:00
.github update readme badge 2022-07-26 15:59:56 +09:00
bench update dockerfile and benchmark result 2022-07-23 00:33:03 +09:00
docker-bin totally refactored 2022-07-09 01:01:00 +09:00
src add bytename trait for implemeting server/path name in bytename 2022-07-27 21:47:28 +09:00
.dockerignore fix config bug 2022-07-05 23:05:33 +09:00
.gitignore initial commit 2022-06-16 17:13:28 -04:00
Cargo.toml reconsider error and introduce custom error using thiserror 2022-07-27 20:09:36 +09:00
CHANGELOG.md implement path replacing option 2022-07-26 20:58:18 +09:00
config-example.toml implement path replacing option 2022-07-26 20:58:18 +09:00
docker-compose.yml fix sample config 2022-07-23 02:02:43 +09:00
Dockerfile fix dockerfile 2022-07-25 15:27:19 +09:00
LICENSE Initial commit 2022-06-16 07:47:54 +09:00
localhost.crt fix sample config 2022-07-23 02:03:01 +09:00
localhost.key fix sample config 2022-07-23 02:03:01 +09:00
README.md update example config 2022-07-26 16:44:25 +09:00
TODO.md implement path replacing option 2022-07-26 20:58:18 +09:00

rpxy: A simple and ultrafast reverse-proxy for multiple host names with TLS termination, written in pure Rust

Unit Test Build and Publish Docker ShiftLeft Scan

WIP Project

Introduction

rpxy [ahr-pik-see] is an (currently experimental) implementation of simple and lightweight reverse-proxy, which is based on hyper, rustls and tokio, i.e., written in pure Rust. Our rpxy allows to route multiple host names to appropriate backend application servers while serving TLS connections.

This project is still work-in-progress. But it is already working in some production environments and serves numbers of domain names. Furthermore it dramatically outperforms NGINX and Caddy in the setting of very simple HTTP reverse-proxy scenario (See bench directory).

rpxy provides the sanitization of TLS's SNI (server name indication) in default by correctly binding a certificate used to establish an underlying TLS connection with backend application specified in the overlaid HTTP HOST header (or URL in Request line). Additionally, as a somewhat unstable feature, our rpxy can handle the brand-new HTTP/3 connection thanks to quinn and hyperium/h3.

Making an executable binary

% cargo build --release

Then you have a binary at ./target/release/rpxy.

You can also use docker image instead of building from the source.

Usage

todo!

Configuration

todo!

Using docker image

todo!