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" => "10.0.0.242", "port" => 10000 ) ) )