Skip to content

Exa-Networks/exaproxy

Repository files navigation

ExaProxy

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.

News

August 21st 2014, released ExaProxy 1.2.1

Features

  • 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
  • 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)

Usage

Start ExaProxy on your local machine and point your browser to 127.0.0.1 port 8000

More Information

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).

Get it

> 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.