via v0.4.2

Via is a tiny HTTP reverse proxy.

Via

via logo

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

Repository

via

Owner
Statistic
  • 1
  • 0
  • 0
  • 0
  • 0
  • 15 days ago
  • October 1, 2026
License

Apache License 2.0

Links
Synced at

Wed, 07 Oct 2026 18:16:46 GMT

Languages