|
|
|
===================
|
|
|
|
the Proxy Interface
|
|
|
|
===================
|
|
|
|
|
|
|
|
-----------------
|
|
|
|
Module: mod_proxy
|
|
|
|
-----------------
|
|
|
|
|
|
|
|
:Author: Jan Kneschke
|
|
|
|
:Date: $Date: 2004/08/01 07:01:29 $
|
|
|
|
:Revision: $Revision: 1.1 $
|
|
|
|
|
|
|
|
:abstract:
|
|
|
|
The proxy module a simplest way to connect lighttpd to
|
|
|
|
java servers which have a HTTP-interface.
|
|
|
|
|
|
|
|
.. meta::
|
|
|
|
:keywords: lighttpd, Proxy
|
|
|
|
|
|
|
|
.. contents:: Table of Contents
|
|
|
|
|
|
|
|
Description
|
|
|
|
===========
|
|
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
Options
|
|
|
|
=======
|
|
|
|
|
|
|
|
lighttpd provides the Proxy support via the proxy-module
|
|
|
|
(mod_proxy) which provides 2 options in the config-file:
|
|
|
|
|
|
|
|
:proxy.debug:
|
|
|
|
a value between 0 and 65535 to set the debug-level in the
|
|
|
|
Proxy module. Currently only 0 and 1 are used. Use 1 to
|
|
|
|
enable some debug output, 0 to disable it.
|
|
|
|
|
|
|
|
:proxy.balance:
|
|
|
|
might be one of 'hash', 'round-robin' or 'fair' (default).
|
|
|
|
|
|
|
|
'round-robin' choses 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. 'fair' is the normal
|
|
|
|
load-based, passive balancing.
|
|
|
|
|
|
|
|
:proxy.server:
|
|
|
|
tell the module where to send Proxy requests to. Every
|
|
|
|
file-extension can have its own handler. Load-Balancing is
|
|
|
|
done by specifying multiple handles for the same extension.
|
|
|
|
|
|
|
|
structure of proxy.server section: ::
|
|
|
|
|
|
|
|
( <extension> =>
|
|
|
|
(
|
|
|
|
( "host" => <string> ,
|
|
|
|
"port" => <integer> ),
|
|
|
|
( "host" => <string> ,
|
|
|
|
"port" => <integer> )
|
|
|
|
),
|
|
|
|
<extension> => ...
|
|
|
|
)
|
|
|
|
|
|
|
|
:<extension>: is the file-extension or prefix (if started with "/")
|
|
|
|
might empty to match all requests
|
|
|
|
:"host": is ip of the proxy server
|
|
|
|
:"port": is tcp-port on the "host" used by the proxy
|
|
|
|
server (default: 80)
|
|
|
|
|
|
|
|
e.g.: ::
|
|
|
|
|
|
|
|
proxy.server = ( ".jsp" =>
|
|
|
|
( (
|
|
|
|
"host" => "10.0.0.242",
|
|
|
|
"port" => 81
|
|
|
|
) )
|
|
|
|
)
|
|
|
|
|
|
|
|
Example:
|
|
|
|
========
|
|
|
|
|
|
|
|
Using lighttpd + mod_proxy in front of 8 Squids which handle the
|
|
|
|
caching of dynamic content for you. All requests for the host
|
|
|
|
www.example.org should be forwarded to the proxy. All proxies
|
|
|
|
listen on port 80 for requests. ::
|
|
|
|
|
|
|
|
$HTTP["host"] == "www.example.org" {
|
|
|
|
proxy.balance = "hash"
|
|
|
|
proxy.balance = ( "" => ( ( "host" => "10.0.0.10" ),
|
|
|
|
( "host" => "10.0.0.11" ),
|
|
|
|
( "host" => "10.0.0.12" ),
|
|
|
|
( "host" => "10.0.0.13" ),
|
|
|
|
( "host" => "10.0.0.14" ),
|
|
|
|
( "host" => "10.0.0.15" ),
|
|
|
|
( "host" => "10.0.0.16" ),
|
|
|
|
( "host" => "10.0.0.17" ) ) )
|
|
|
|
}
|
|
|
|
|
|
|
|
If one of the hosts goes down the all requests for this one server are
|
|
|
|
moved equally to the other servers. If you want to know more about
|
|
|
|
the algorithm used here google for 'Microsoft CARP'.
|
|
|
|
|
|
|
|
|