Server Cloud con server Linux e Apache HTTP

Se Apache si trova dietro un Load Balancer, l'IP effettivo dell'utente viene sovrascritto dall'IP del Load Balancer. In questo modo il file di log Apache contiene solo l'indirizzo del Load Balancer. In questo articolo ti mostriamo come registrare anche l'IP originale dell'utente, una volta soddisfatti determinati requisiti.

In questo caso, il protocollo HTTP contiene l'X-Forward-For-Header. Questa intestazione viene utilizzata per trasmettere l'indirizzo IP dell'utente quando quest'ultimo accede ad un server web tramite un proxy o un Load Balancer. Tuttavia, poiché Apache non tiene conto di questa intestazione per impostazione predefinita, la configurazione di Apache deve essere modificata.

Nota bene:

Per motivi tecnici, la trasmissione lato "Load Balancer" dell'IP - e quindi la soluzione qui descritta - funziona solo con accessi non crittografati. Se la chiamata viene effettuata tramite HTTPS, tuttavia, non è possibile effettuare alcuna voce di intestazione, in quanto la comunicazione tra client e server Web è completamente crittografata (non è possibile installare un certificato SSL separato sul bilanciatore di carico).

Per personalizzare l'impostazione di registrazione di Apache in modo che includa l'intestazione X-Forward-For:

  • Nel file di configurazione Apache apache2.conf (CentOS: httpd.conf), aggiungere una voce nel formato di log con la variabile %{X-Forwarded-For}i.

    Esempio di direttiva LogFormat (denominata "proxy"):

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" proxy
  • Aggiungi una voceCustomLog per i domini desiderati nei file di configurazione dei corrispondenti hostvirtuali.

Nell'esempio seguente, Apache viene istruito a registrare le chiamate via domain tld nel file access.log con il formato log "proxy":

<VirtualHost domain.tld:80>
.
#CustomLog logs/access.log combined
CustomLog logs/access.log proxy
.
</VirtualHost>
  • Riavviare il servizio Apache perché la modifica abbia effetto.