2.1 KiB
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 client-side.
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.
Memory usage sits at around 25M under load.
Install
- Download the latest release from /releases or
run
./build.sh
to build the program locally. cp config.example.yml config.yml
- Edit the config.
- Start the loadbalancer with
./proxy-loadbalancer --config [path to your config.yml]
The load balancer supports using curl-impersonate to masquerade as the Chrome browser when performing proxy checks. This is experimental.
- Download
*.x86_64-linux-gnu.tar.gz
from https://github.com/lwthiker/curl-impersonate/releases - Set
proxy_check_impersonate_chrome: true
- Enter the path to the
curl_chrome116
binary inproxy_check_impersonate_chrome_binary
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.