2.3 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 has experimental support for using curl-impersonate to masquerade as the Chrome browser when performing proxy checks.
- 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
.
Use --log-third-party-test-failures
along with --debug
when you want extra info on the third-party proxy tests. This
can get very noisy if you have lots of third-party proxies so it's hidden behind an extra flag.
=== Proxy Load Balancer ===
Usage of /tmp/go-build1714785557/b001/exe/proxy-loadbalancer:
--config [string]
Path to the config file
-d, --debug
Enable debug mode
-l, --log-third-party-test-failures
Log third-party test debug info
-v Print version and exit
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.