Rust-based ACL-aware HTTP/HTTPS proxy with a TOML configuration file and a flexible URL policy engine.
Key capabilities:
- HTTP/1.1 explicit proxy (absolute-form requests).
- HTTPS MITM via CONNECT with per-host certificates signed by a local CA.
- Transparent HTTPS listener that terminates TLS directly.
- HTTP/2 support on transparent HTTPS; optional HTTP/2 upstream.
- Structured logging, policy decision logging, and JSON capture files with size-limited bodies.
- Loop protection with configurable header injection.
- Config reload via SIGHUP with atomic state swap.
- External auth webhooks for approval-required rules.
- Helper CLI to decode captured bodies.
Create a config:
acl-proxy config init config/acl-proxy.tomlValidate it:
acl-proxy config validate --config config/acl-proxy.tomlRun the proxy:
acl-proxy --config config/acl-proxy.tomlSend traffic:
curl -x http://127.0.0.1:8881 http://example.com/
curl -x http://127.0.0.1:8881 https://example.com/ \
--proxy-cacert certs/ca-cert.pemFor a full walkthrough, see docs/getting-started.md.
Start with docs/README.md, then explore:
docs/configuration.mdanddocs/config-reference.mddocs/policy.mddocs/proxy-modes.mddocs/tls-and-certificates.mddocs/logging-and-capture.mddocs/external-auth.mddocs/operations.mddocs/cli.mddocs/troubleshooting.md
The repository includes acl-proxy.sample.toml as a comprehensive example.
See docs/development.md for build and test notes.