A round-robin load balancer for HTTP proxies.
Go to file
Cyberes a886056d7f add option to block domains, add option to resolve specific domains through specific proxies, option to set the check interval 2024-05-06 21:00:35 -06:00
src add option to block domains, add option to resolve specific domains through specific proxies, option to set the check interval 2024-05-06 21:00:35 -06:00
.gitignore update documentation 2024-04-12 18:34:47 -06:00
LICENSE Initial commit 2024-01-14 14:17:56 -07:00
README.md update readme 2024-04-16 21:48:06 -06:00
build.sh finish prototype 2024-04-12 18:23:18 -06:00
config.example.yml add option to block domains, add option to resolve specific domains through specific proxies, option to set the check interval 2024-05-06 21:00:35 -06:00
loadbalancer.service make request logging info level, add request logging to webserver, update service file 2024-04-12 19:31:28 -06:00
requirements.txt adjust logging and test headers 2024-02-14 15:28:23 -07:00

README.md

proxy-loadbalancer

A round-robin load balancer for HTTP proxies.

This is a simple proxy load balancer that will route requests to a cluster of proxy backends in a round-robin fashion. This makes it easy to connect your clients to a large number of proxy servers without worrying about implementing anything special clientside.

This proxy server will transparently forward HTTPS requests without terminating them, meaning a self-signed certificate is not required. Downstream HTTPS proxy servers are not supported.

Install

  1. Download the latest release from /releases or run ./build.sh to build the program locally.
  2. cp config.example.yml config.yml
  3. Edit the config.
  4. Start the loadbalancer with ./proxy-loadbalancer --config [path to your config.yml]

Use

You can run your own "public IP delivery server" canihazip https://git.evulid.cc/cyberes/canihazip or use the default api.ipify.org

An example systemd service loadbalancer.service is provided.

The server displays health, stats, info at /json.

=== Proxy Load Balancer ===
Usage of ./proxy-loadbalancer:
  --config [string]
               Path to the config file
  -d, --debug  
               Enable debug mode
  --v          Print version and exit
  -h, --help   Print this help message

Special Headers

The load balancer accepts special headers to control its behavior:

  • Thirdparty-Bypass: don't use any third-party endpoints for this request.
  • Thirdparty-Include-Broken: use all online endpoints for this request, including third-party ones that failed the special test.