Annotation of embedaddon/lighttpd/doc/outdated/extforward.txt, revision 1.1.1.1

1.1       misho       1: ==============
                      2: mod_extforward
                      3: ==============
                      4: 
                      5: .. contents::
                      6: 
                      7: Overview
                      8: ========
                      9: 
                     10: Comman Kang <comman.kang at gmail.com> sent me: ::
                     11: 
                     12:   Hello jan.
                     13: 
                     14:        I've made something rough but similar to mod_extract_forwarded for
                     15:   Apache.  This module will extract the client's "real" ip from
                     16:   X-Forwarded-For header which is added by squid or other proxies. It might be
                     17:   useful for servers behind reverse proxy servers.
                     18: 
                     19:        However, this module is causing segfault with mod_ssl or
                     20:   $HTTP{''socket"} directive,  crashing in config_check_cond while patching
                     21:   connection ,  I do not understand architecture of the lighttpd well, does it
                     22:   need to call patch_connection in either handle_request_done and
                     23:   connection_reset ?
                     24: 
                     25: Lionel Elie Mamane <lionel@mamane.lu> improved the patch: ::
                     26: 
                     27:     I've taken lighttpd-1.4.10-mod_extforward.c from the wiki and I've
                     28:   extended it. Here is the result.
                     29: 
                     30:   Major changes:
                     31: 
                     32:    - IPv6 support
                     33: 
                     34:    - Fixed at least one segfault with SERVER['socket']
                     35: 
                     36:    - Arrange things so that a url.access-deny under scope of a
                     37:      HTTP['remoteip'] condition works well :)
                     38: 
                     39:   I've commented the code in some places, mostly where I wasn't sure
                     40:   what was going on, or I didn't see what the original author meant to
                     41:   do.
                     42: 
                     43: Options
                     44: =======
                     45: 
                     46: extforward.forwarder
                     47:   Sets trust level of proxy IP's.
                     48: 
                     49:   Default: empty
                     50: 
                     51:   Example: ::
                     52: 
                     53:     extforward.forwarder = ("10.0.0.232" => "trust")
                     54: 
                     55:   will translate ip addresses coming from 10.0.0.232 to real ip addresses extracted from "X-Forwarded-For" or "Forwarded-For" HTTP request header.
                     56: 
                     57: extforward.headers
                     58:   Sets headers to search for finding the originl addresses.
                     59: 
                     60:   Example (for use with a Zeus ZXTM loadbalancer): ::
                     61: 
                     62:     extforward.headers = ("X-Cluster-Client-Ip")
                     63: 
                     64:   Default: empty, results in searching for "X-Forwarded-For" and "Forwarded-For"
                     65: 
                     66: Note
                     67: =======
                     68: 
                     69: The effect of this module is variable on $HTTP["remotip"] directives and other module's remote ip dependent actions.
                     70: Things done by modules before we change the remoteip or after we reset it will match on the proxy's IP.
                     71: Things done in between these two moments will match on the real client's IP.
                     72: The moment things are done by a module depends on in which hook it does things and within the same hook
                     73: on whether they are before/after us in the module loading order
                     74: (order in the server.modules directive in the config file).
                     75: 
                     76: Tested behaviours:
                     77: 
                     78:   mod_access: Will match on the real client.
                     79: 
                     80:   mod_accesslog:
                     81:    In order to see the "real" ip address in access log ,
                     82:    you'll have to load mod_extforward after mod_accesslog.
                     83:    like this: ::
                     84: 
                     85:     server.modules  = (
                     86:        .....
                     87:        mod_accesslog,
                     88:        mod_extforward
                     89:     )
                     90: 
                     91: Samples
                     92: =======
                     93: 
                     94: Trust proxy 10.0.0.232 and 10.0.0.232 ::
                     95: 
                     96:   extforward.forwarder = (
                     97:      "10.0.0.232" => "trust",
                     98:      "10.0.0.233" => "trust",
                     99:   )
                    100: 
                    101: Trust all proxies  (NOT RECOMMENDED!) ::
                    102: 
                    103:   extforward.forwarder = ( "all" => "trust")
                    104: 
                    105: Note that "all" has precedence over specific entries, so "all except" setups will not work.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>