ExaProxy is a a high-performance non-caching proxy. It is able to filter HTTP traffic using your favorite programming language.
It was part of Exa Networks' SurfProtect solution, but has been replaced by a new codebase in Golang.
Exaproxy is used in production since early 2013, and proxies millions of URL per day, one installation sees Gb/s of HTTP traffic, with hundreds of Mb/s per server, and several tens of thousands of connections per machine, but this does not mean our work is finished. We continue to improve it.
August 21st 2014, released ExaProxy 1.2.1
- Non-caching HTTP/HTTPS (with CONNECT) Proxy
- forward, reverse or transparent proxy
- IPv6 and/or IPv4 support (can act as a 4to6 or 6to4 gateway)
- High Performance
- Working with the "upcoming" web services
- support for unknown HTTP versions
- websocket and TLS support (Upgrade header support)
- Traffic interception
- SQUID compatible interface
- ICAP like interface via local program
- Support for HAProxy proxy protocol
- Built-in web servers to monitor the proxy via local webpage ( default http://127.0.0.1:8080 )
- dynamic configuration change
- running information in json format (/json)
Start ExaProxy on your local machine and point your browser to 127.0.0.1 port 8000
Keep up to date, follow twitter or the google community
ExaProxy was born out by necessity. No other open source proxy has the same features RFC compliance
This presentation explains why other solutions were not suitable.
Development is done on python 2.7. This program has no dependencies on third party libraries and will run out of the box on any Unix system.
Tested with Co-Advisor. We are failing HTTP/1.0 conversion requirement and responses modifications (which we do not support as we assume that both the client and server are valid HTTP/1.1 implementation).
> wget https://codeload.github.com/Exa-Networks/exaproxy/tar.gz/1.2.1
> tar xzvf 1.2.1
> cd exaproxy-1.2.1
> ./sbin/exaproxy
will give you a working proxy on port 3128
> ./sbin/exaproxy -h
will give you a definition of all the configuration options
> env exaproxy.tcp4.port=8088./sbin/exaproxy -de
exaproxy.tcp4.port='8088'
or
> export exaproxy_tcp4_port=8088
> ./sbin/exaproxy -de
exaproxy.tcp4.port='8088'
To change from the command line and see what options were changed from their default configuration values in the configuration file.