WeeProxy is a wee bit http proxy to access http services mapped over URL path.
-
HTTP Proxy based on URL path mapped to Backends
-
round-robin load-balancing
-
graceful stop/restart
-
prometheus performance metrics at
/metrics
-
configurable header customization
-
rate-limiting (same config for all backends)
-
circuit breaker (same config for all backends)
- start server
dep ensure
go run weeproxy.go
-
can also be used by downloaded pre-compiled binary from latest release, remember to have sample config in same dir or set required env var
-
check http
curl localhost:8080/nothing
curl localhost:8080/google
-
config to be used can be changed by providing path to
env
varWEEPROXY_CONFIG
-
proxies based on URL Path maps provided as configuration like, sample config
{
"server": {
"listen-at": ":8080"
},
"url-proxy": {
"/google": "http://www.google.com http://www.google.in",
....more
},
"custom-headers": {
"X-Proxy-By": "WeeProxy" // custom response headers for each response
},
"sanity": {
"max-errors-per-sec": "10", // per backend max errors allowed before ban
"max-request-per-sec": "7000" // per backend max requests allowed before ban
}
}
in sample config above, when multiple backends need be load-balanced they are separated by a space
if any other character gets used as separator, env
WEEPROXY_LB_SEPARATOR
need be set with same
- port to listen at can be modified updating
listen-at
field in above config
-
better no-backend handling
-
runtime authenticated config updates over admin api
-
rate-limiting (per backend config)
-
circuit breaker (per backend config)