Reverse proxy, X-Forwarded-For i prawdziwy IPek
Gdy używamy haproxy (czy jakiegokolwiek innego proxy) pojawia się mały problem, mianowicie backend widzi wszystkie połączenia jako pochodzące z IP maszyny. Jest to problemem przy logowaniu oraz dla niektórych aplikacji. Większość serwerów WWW ma moduł który pozwala na “odzyskanie” IPka z nagłówka “X-Forwarded-For”. Oczywiście Twoje proxy musi umieć przekazywać taki nagłówek ale większość robi to domyślnie albo potrafi po włączeniu odpowiednich opcji (np. haproxy: option forwardfor except 127.0.0.1)
Tak na szybko:
Lighttpd:
server.modules = (
"mod_access",
"mod_alias",
"mod_accesslog",
"mod_extforward",
"mod_expire",
"mod_compress",
"mod_rewrite",
"mod_extforward",
)
extforward.headers = ("X-Forwarded-For")
extforward.forwarder = ("127.0.0.1" => "trust")
extforward musi być po mod_accesslog, inaczej logi nie będą widzieć tego “prawdziwego” IPka (tak wiem, dziwne)
Apache
# aptitude install libapache2-mod-rpaf
(w debianie uruchamia się automatycznie z konfigiem “ufającym” 127.0.0.1, jak Twoje proxy jest gdzie indziej zmień w /etc/apache2/mods-available/rpaf.conf)
Nginx
set_real_ip_from 127.0.0.1;
real_ip_header X-Forwarded-For;
wymaga nginxa ze squeeze, w lennym jest trochę za stary