Projects / Surrogate


Surrogate is an HTTP proxy functioning in both forward and reverse proxy modes. It is written in Erlang OTP and uses stream filters for inspecting and modifying data as it passes through the proxy. Additional stream filters can be implemented by writing modules that implement the filter_stream behavior. Reverse proxy features include load balancing. Additional balancer methods can be specified by implementing modules with the gen_balancer behavior. Forward proxy features include gzip compression to end servers, CONNECT support, and an HTTP proxy with authentication that can use MySQL or Mnesia backends. There is also a SOCKS 4/5 proxy listener.

Operating Systems

Recent releases

  •  22 Jun 2011 20:26

    Release Notes: This release added IPv6, clustering, and health checks for load balancer pools. When deployed with Erlang R14B, SSL termination works with both IPv4 and IPv6. Support for clustering listeners requires Cluster Supervisor 0.1. mod_cluster provides vip management for IPv4 and IPv6 vips by using the Cluster Supervisor application. Surrogate supports offloading stream filter processing work to worker nodes. TCP handshake health checks allow hosts to be dropped from load balancer pools. A configuration setting for how many times a pool is to be tried before giving up has also been added.


    Project Spotlight


    A Fluent OpenStack client API for Java.


    Project Spotlight

    TurnKey TWiki Appliance

    A TWiki appliance that is easy to use and lightweight.