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