diff --git a/README.md b/README.md index 3169068..b27b719 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ --- -# Aralez (Արալեզ), +# Aralez (Արալեզ) ### **Reverse proxy built on top of Cloudflare's Pingora** @@ -27,16 +27,16 @@ Built on Rust, on top of **Cloudflare’s Pingora engine**, **Aralez** delivers - **Upstreams TLS detection** — Aralez will automatically detect if upstreams uses secure connection. - **Built in rate limiter** — Globar or route limit requests to upstreams. - **Authentication** — Supports Basic Auth, API tokens, and JWT verification. - - **Basic Auth** - - **API Key** via `x-api-key` header - - **JWT Auth**, with tokens issued by Aralez itself via `/jwt` API - - **Forward Auth**, Sends requests to an authentication server. + - **Basic Auth** + - **API Key** via `x-api-key` header + - **JWT Auth**, with tokens issued by Aralez itself via `/jwt` API + - **Forward Auth**, Sends requests to an authentication server. - **Load Balancing** Round-robin, health checks, optional sticky sessions. - **Built in file server** — Build in minimalistic file server for serving static files, should be added as upstreams for public access. - **Upstream Providers:** - - `file` Upstreams are declared in config file. - - `consul` Upstreams are dynamically updated from Hashicorp Consul. - - `kubernetes` Upstreams are dynamically updated from kubernetes api server. + - `file` Upstreams are declared in config file. + - `consul` Upstreams are dynamically updated from Hashicorp Consul. + - `kubernetes` Upstreams are dynamically updated from kubernetes api server. - **Automatic WebSocket Support:** WS connection upgrades are handled automatically. - **Automatic gRPC Support:** gRPC detected and handled automatically. - **Header Injection:** Global and per-route server/client headers injection. @@ -94,7 +94,7 @@ File names: | `aralez-x86_64-compat-glibc.gz` | Dynamic Linux x86_64 binary, compatible with old pre Haswell CPUs | | `aralez-aarch64-musl.gz` | Static Linux ARM64 binary, without any system dependency | | `aralez-aarch64-glibc.gz` | Dynamic Linux ARM64 binary, with minimal system dependencies | -| `sadoyan/aralez` | Docker image on Debian 13 slim (https://hub.docker.com/r/sadoyan/aralez) | +| `sadoyan/aralez` | Docker image on Debian 13 slim () | **Via docker** @@ -124,7 +124,7 @@ For getting the best performance on newer hardware use `aralez-x86_64-*.gz`. ./aralez -c path/to/main.yaml ``` -## 🔌 Systemd integration +## Systemd integration ```bash cat > /etc/systemd/system/aralez.service <` header. - - To obtain JWT a token, you should send **generate** request to built in api server's `/jwt` endpoint. - - `master_key`: should match configured `masterkey` in `main.yaml` and `upstreams.yaml`. - - `owner` : Just a placeholder, can be anything. - - `valid` : Time in minutes during which the generated token will be valid. + - To obtain JWT a token, you should send **generate** request to built in api server's `/jwt` endpoint. + - `master_key`: should match configured `masterkey` in `main.yaml` and `upstreams.yaml`. + - `owner` : Just a placeholder, can be anything. + - `valid` : Time in minutes during which the generated token will be valid. **Example JWT token generation request** @@ -369,7 +369,7 @@ curl -u username:password -H 'Host: myip.mydomain.com' http://127.0.0.1:6193/ - "192.168.211.212:8000" ``` -## 💡 Results reflect synthetic performance under optimal conditions. +## 💡 Results reflect synthetic performance under optimal conditions - CPU : Intel(R) Xeon(R) CPU E3-1270 v6 @ 3.80GHz - 300 : simultaneous connections @@ -378,16 +378,16 @@ curl -u username:password -H 'Host: myip.mydomain.com' http://127.0.0.1:6193/ ``` Summary: - Success rate: 100.00% - Total: 600.0027 secs - Slowest: 0.2138 secs - Fastest: 0.0002 secs - Average: 0.0023 secs - Requests/sec: 129777.3838 + Success rate: 100.00% + Total: 600.0027 secs + Slowest: 0.2138 secs + Fastest: 0.0002 secs + Average: 0.0023 secs + Requests/sec: 129777.3838 - Total data: 0 B - Size/request: 0 B - Size/sec: 0 B + Total data: 0 B + Size/request: 0 B + Size/sec: 0 B Response time histogram: 0.000 [1] | @@ -415,8 +415,8 @@ Response time distribution: Details (average, fastest, slowest): - DNS+dialup: 0.0161 secs, 0.0002 secs, 0.0316 secs - DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0000 secs + DNS+dialup: 0.0161 secs, 0.0002 secs, 0.0316 secs + DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0000 secs Status code distribution: [200] 77866624 responses @@ -434,16 +434,16 @@ Error distribution: ``` Summary: - Success rate: 100.00% - Total: 600.0021 secs - Slowest: 0.2182 secs - Fastest: 0.0002 secs - Average: 0.0024 secs - Requests/sec: 123870.5820 + Success rate: 100.00% + Total: 600.0021 secs + Slowest: 0.2182 secs + Fastest: 0.0002 secs + Average: 0.0024 secs + Requests/sec: 123870.5820 - Total data: 0 B - Size/request: 0 B - Size/sec: 0 B + Total data: 0 B + Size/request: 0 B + Size/sec: 0 B Response time histogram: 0.000 [1] | @@ -471,8 +471,8 @@ Response time distribution: Details (average, fastest, slowest): - DNS+dialup: 0.0066 secs, 0.0002 secs, 0.0210 secs - DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0000 secs + DNS+dialup: 0.0066 secs, 0.0002 secs, 0.0210 secs + DNS-lookup: 0.0000 secs, 0.0000 secs, 0.0000 secs Status code distribution: [200] 74322377 responses