gobetween - modern & minimalistic proxy server for the Cloud era.
Current status In development. Incompatible changes may occur until v1.0.0. If you tried gobetween in your dev, your feedback would be highly appreciated.
TCP proxying (udp and more will come later).
Flexible backends discovery strategies:
- Static list - hardcoded list
- Docker / Docker Swarm - query backends from Docker API by label
- Exec - Run arbitrary external script and read backends from output
- JSON - Make http query and parse json
- Text/Regexp - Make http query and parse text with regexps
- SRV - Query SRV server
Powerful healthchecks:
- Ping - Simple TCP ping healtcheck
- Exec - Run external script providing host and port and read healtcheck status from output
Balancing strategies:
- Iphash
- Leastconn
- Roundrobin
- Weight
Clear and beautiful TOML config file.
For configuration documentation see default config file.
- Go 1.6+ https://golang.org/
- $ make deps
Run several web servers for test in different terminals:
$ python -m SimpleHTTPServer 8000
$ python -m SimpleHTTPServer 8001
Run
$ make run
Test with curl:
$ curl http://localhost:3000
- Clone this repo
$ make
$ sudo -E make install
$ vim /etc/gobetween.toml
$ gobetween -c /etc/gobetween.toml
$ sudo make uninstall
For details see config/gobetween.toml
To increase performance run with:
GOMAXPROCS=`nproc` gobetween
- Yaroslav Pogrebnyak
- Nick Doikov
- Ievgen Ponomarenko
It's play on words: gobetween ("go between"). ALso it's written in Go, and it's a proxy so it's between 2 parties :-)
MIT. See LICENSE file for more details.
Logo was designed by Max Demchenko