Gdy już ustawimy reverse proxy przed Apache szybko można zauważyć że w logach zamiast adresów IP zdalnych użytkowników pojawia się tylko jeden adres: adres naszego proxy. Również z poziomu php’a jako adres klienta widać IP naszego proxy.

By poradzić sobie z tym problemem trzeba na serwerze reverse proxy ustawić przekazywanie informacji o oryginalnym adresie IP klienta w nagłówku X-Forwarded-For. W przypadku gdy reverse proxy działa na nginx’e wystarczy dodać taki wpis:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Teraz w trzeba zainstalować moduł mod_rpaf dla Apachego, który to zajmie się interpretacją nagłówka i podmianą IP proxy prawdziwym IP. Na Debianie wystarczy wpisać:

apt-get install libapache2-mod-rpaf

Po instalacji należy w pliku /etc/apache2/mods-available/rpaf.conf w opcji RPAFproxy_ips dopisać adresy IP serwerów proxy, np (oczywiście wpisz swoje adresy):

RPAFproxy_ips 127.0.0.1 10.24.0.5

Ważne by były to zaufane adresy IP - bo w tym miejscu pozwalamy by z tych lokalizacji możliwe było nadpisanie adresu IP np. w logach. Jeżeli pozwolimy na modyfikację adresów IP z zewnątrz to atakujący może wykorzystać to by nadpisać swój prawdziwy adres fałszywym.

Pozostało uruchomić moduł i zrestartować Apachego aby go załadował:

a2enmod rpaf
invoke-rc.d apache2 restart

Teraz zarówno w logach Apache’go jak i skryptach PHP’a będzie przekazywane rzeczywiste IP użytkownika.