Aptly named alexproxy, this is my asynchronous HTTP(s) proxy
written in Golang.
Most of the server part is copied and modified from the Golang httputil package.
In need of a fast and simple HTTP(s) proxy?
Look no further, alexproxy is the solution for you!
- CIDR-based IP access control
- Monitoring via netdata module go_expvar
- Tight systemd integration by implementing sd_notify(3)
- Supports both regular HTTP proxying and HTTPS proxying by implementing the HTTP CONNECT method
- Supports
HTTP_PROXY/HTTPS_PROXYenvironment variables so you can proxy while you proxy - Easy to use: just run
alexproxy -listen :8080and you're up and running! - Runs on Windows, Linux, macOS and more!
Usage of alexproxy:
-cidrfile string
Path to file containing newline-separated CIDR prefixes that are allowed access, 0.0.0.0/0 / ::/0 is allowed if not specified
-direct-cidrfile string
Path to file containing newline-separated CIDR prefixes that are allowed access to direct endpoint, 127.0.0.0/8 / ::1/128 is allowed if not specified
-debug
Enable debug logging
-h Show this help menu
-help
Show this help menu
-listen string
Listen address in the format of <ip>:<port>
-timeout string
Request timeout (default "30s")
-version
Print version and exit
Returns 200 OK.
See golang.org/pkg/expvar. Additionally exports proxyRequests, which is a counter of requests currently being handled.
Requires the Golang runtime (and GNU Make if you want to make your life easier).
Run make to build, or if you're not on Linux, have a look at the
commands in the Makefile.