A HTTP reverse proxy & load balancer written in Go, configurable via YAML. Supports multiple routes and backends, with per-route caching healthchecks and load balancing strategies.
- Configurable via YAML.
- Route requests based on URL path prefix matching.
- Supports graceful shutdown.
- Configurable per route:
- load balancing strategies (single, round-robin, random)
- cache (max size, max entry size, ttl)
- health checks (path, interval, timeout, fails, passes)
- no
httputil.ReverseProxyhere.
The load balancer is configured using a YAML file. Example:
listen: "localhost:8042"
routes:
/:
lb:
strategy: "single"
cache:
enabled: false
health_check:
enabled: false
backends:
- url: "http://localhost:8080"
/api:
lb:
strategy: "round_robin"
cache:
enabled: true
max_size: 500
max_entry_size: 1
ttl: 3
health_check:
path: "/health"
enabled: true
interval: 5
timeout: 2
fails: 3
passes: 2
backends:
- url: "http://localhost:8081"
- url: "http://localhost:8082"
- url: "http://localhost:8083"make./cmiyc -hmake validateSee LICENSE
