apache2.4
RemoteIPHeader X-Real-IP RemoteIPTrustedProxy 127.0.0.1
apache2.2
Не требует никакой настройки, достаточно скомпилировать и установить. При необходимости можно изменить заголовок с X-Real-IP на желаемый.
# apxs -a -i -c mod_realip.c
#include "httpd.h" #include "http_config.h" #include "apr_strings.h" module AP_MODULE_DECLARE_DATA realip_module; static int change_remote_ip(request_rec *r) { const char *fwdvalue; char *val; if (fwdvalue = apr_table_get(r->headers_in, "X-Real-IP")) { apr_array_header_t *arr = apr_array_make(r->pool, 0, sizeof(char*)); while (*fwdvalue && (val = ap_get_token(r->pool, &fwdvalue, 1))) { *(char **)apr_array_push(arr) = apr_pstrdup(r->pool, val); if (*fwdvalue != '\0') ++fwdvalue; } r->connection->remote_ip = apr_pstrdup(r->connection->pool, ((char **)arr->elts)[((arr->nelts)-1)]); r->connection->remote_addr->sa.sin.sin_addr.s_addr = inet_addr(r->connection->remote_ip); } return DECLINED; } static void register_hooks(apr_pool_t *p) { ap_hook_post_read_request(change_remote_ip, NULL, NULL, APR_HOOK_FIRST); } module AP_MODULE_DECLARE_DATA realip_module = { STANDARD20_MODULE_STUFF, NULL, NULL, NULL, NULL, NULL, register_hooks, };
# sed 's/remote_ip/client_ip/g;s/remote_addr/client_addr/g' -i mod_realip.c