backflow
                                
                                 backflow copied to clipboard
                                
                                    backflow copied to clipboard
                            
                            
                            
                        A dynamic reverse proxy server
Backflow  
 
A load balancing reverse proxy server with an API. Supports adding/removing backends on-the-fly without restarts.
Install
Download from releases and unzip
Configuration
Edit proxy.yml
server:
  port: 8000  # proxy listen port
  backends: http://127.0.0.1:8090 http://127.0.0.1:8091  # List of hosts to forward requests to (in round-robin)
  maxRequestTime: 30000  # -1 to disable
  ioThread: 4
  backlog: 1000
  rewriteHostHeader: false
  reuseXForwarded: true
  connectionsPerThread: 20
  workerThreads: 16 # default: Runtime.getRuntime().availableProcessors()*8
  workerTaskMaxThreads : 16 # default: workerThreads
  sslPort: 8443
  keystore: /path/to/keystore.jks
  keystorePassword: secret
# Users for accesing the API
users:
  admin: secretPassword
All requests incoming on port 8000 will be forwarded to one of the backends.
Running
./bin/backflow
API
Backflow has a HTTP based API to add/remove backends. Changes are applied dynamically without restarting the server.
Add a new backend
curl -uadmin:secretPassword http://localhost:8000/lb -XPOST -d 'http://new.backend.example.com'
Remove an existing
curl -uadmin:secretPassword http://localhost:8000/lb -XDELETE -d 'http://some.backend.example.com'
List current backends
curl -uadmin:secretPassword http://localhost:8000/lb
Build from source
./gradlew distZip
or
./gradlew distTar
License
Apache 2.0