via v0.4.2
Via
Via is a small, focused HTTP/1.1 reverse proxy with a strict YAML configuration.
Website · Documentation · Releases
Via is designed for straightforward self-hosted deployments where predictable routing and a small operational surface matter more than a plugin ecosystem. It is early-stage software.
What Via handles
- host- and path-based routing with longest-prefix matching;
- optional path-prefix stripping and per-route header rules;
- streaming request and response bodies over reusable upstream connections;
- transparent WebSocket tunnels;
- TLS termination and static file serving;
- multiple listeners and atomic configuration reloads;
- structured request logs, request IDs, timeouts, and graceful shutdown.
Quick start
Install a verified package or binary from GitHub Releases. The installation guide has commands for Debian, Fedora, Ubuntu, x86-64, and ARM64.
For a quick installer-based setup:
curl -fsSL https://via.makridenko.com/install.sh | sh
Save this as via.yaml:
listen: ":8080"
proxy_pass: http://localhost:3000
via check -c via.yaml
via run -c via.yaml
Requests to http://localhost:8080 now reach http://localhost:3000.
Route an API and an application
listen: ":8080"
routes:
- path: /api
proxy_pass: http://localhost:8000
strip_prefix: true
- path: /
proxy_pass: http://localhost:3000
This sends /api/users to the API as /users and all other paths to the application. See Configuration for matching, headers, redirects, static routes, TLS, and multiple listeners.
Find the right guide
| Goal | Guide |
|---|---|
| Install Via and proxy the first request | Install and run |
| Configure routes, prefix stripping, headers, or redirects | Configuration |
| Understand forwarding, streaming, and WebSockets | Proxying and WebSockets |
| Terminate HTTPS and automate Let's Encrypt certificates | TLS and Certbot |
| Serve a site or SPA | Static files |
| Run under systemd | Run as a service |
| Run an unprivileged container | Run in a container |
| Reload safely or rotate certificates | Reload configuration |
| Diagnose a failed request | Logs and troubleshooting |
| Look up commands and flags | CLI reference |
Scope
Via intentionally does not provide caching, FastCGI, WAF functionality, scripting, plugins, arbitrary rewrite rules, a built-in ACME client, or load balancing. See the feature-specific guides for current limitations.
Certbot integration checks
Run make test-certbot to test the deploy hook and the HTTP-01 and TLS reload workflows locally. This requires the OpenSSL CLI in addition to the normal Crystal/TLS build dependencies. Tests do not contact Let's Encrypt or require root, Certbot, or a running systemd service.
License
Apache-2.0
via
- 1
- 0
- 0
- 0
- 0
- 15 days ago
- October 1, 2026
Apache License 2.0
Wed, 07 Oct 2026 18:16:46 GMT