Module: mod_sockproxy


Transparent socket proxy (available since lighttpd 1.4.51)


lighttpd mod_sockproxy is a transparent socket proxy. For a given $SERVER["socket"] config, connections will be forwarded to backend(s) without any interpretation of the protocol.

mod_sockproxy config options:

  • sockproxy.server: backend server definition(s) for hosts to which to send requests; options for each backend host. Every file-extension can have its own handler. Load-balancing is done by specifying multiple hosts for the same extension.
  • sockproxy.debug: debug level (value between 0 and 65535)
  • sockproxy.balance: might be one of 'fair' (default), 'hash', 'round-robin' or 'sticky'.
    • 'fair' or 'least-connection' is the normal load-based, passive balancing.
    • 'round-robin' chooses another host for each request.
    • 'hash' is generating a hash over the request-uri and makes sure that the same request URI is sent to always the same host. That can increase the performance of the backend servers a lot due to higher cache-locality.
    • 'sticky' (since 1.4.44) sends requests from the same (client) IP to the same backend.

Structure of sockproxy.server section:

    ( <extension> => 
      ( [ <label> => ]
        ( "host" => <string> ,
          "port" => <integer> ),
        ( "host" => <string> ,
          "port" => <integer> )
      <extension> => ... 
  • <extension>: must be either "/" or "" (empty) for mod_sockproxy
  • <label>: optional name that shows up in the generated statistics of mod_status, useful for indicating which backend handler processed this extension
  • "host": IP of the proxy server (since 1.4.46, DNS name is resolved to first IP at lighttpd startup)
    (since 1.4.36:) if host starts with a "/" lighttpd will try to connect to the unix domain socket
  • "port": tcp-port on the "host" used by the sockproxy backend server (default: 80)


    sockproxy.server = ( "" =>
                         ( ( 
                           "host" => "",
                           "port" => 10000
                         ) )

Updated by gstrauss over 5 years ago · 1 revisions