Apache: loggare il corretto IP se dietro proxy nginx
Ultimamente si usa spesso attivare nginx come proxy “davanti” ad Apache, magari per usare sistema di caching oppure per funzionalità particolari di bilanciamento, etc.
Attivando semplicemente nginx come proxy, si vedrà che apache inizierà a loggare come IP visitatore sempre quello del proxy e non più quello del visitatore vero e proprio.
Ipotizziamo di avere sia nginx che apache sullo stesso nodo, praticamente nei logs di apache si vedrà sempre 127.0.0.1 come IP del visitatore.
Per ovviare a questo, bastano due configurazioni.
Su nginx:
Modificare il file di configurazione del VirtualHost ed inserire nella sezione location:
1 2 3 4 |
proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; |
Su apache <2.4:
Installare il modulo rpaf:
1 |
apt-get install libapache2-mod-rpaf |
Poi modificare il file /etc/apache2/mods-enabled/rpaf.conf e modificare/inserire le direttive:
1 2 |
RPAFproxy_ips 127.0.0.1 ::1 RPAFheader X-Forwarded-For |
Su apache >= 2.4:
Creare il file /etc/apache2/mods-available/remoteip.conf con all’interno:
1 2 |
RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 127.0.0.1 |
attiva il modulo remoteip:
1 |
a2enmod remoteip |
Modificare le righe LogFormat nel file /etc/apache2/apache2.conf sostituendo %h con %a, es:
1 2 3 |
LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%a %l %u %t \"%r\" %>s %O" common |
Ora riavviare apache ed nginx e nei files di logs ci saranno i corretti IP.
enjoy!
Ti interessa acquistare un dominio a prezzi ultraconvenienti? clicca qui
Se hai trovato utili le informazioni su questo blog,
Fai una donazione!
Clicca sul bottone qui sotto o almeno clicca sul banner pubblicitario 🙂
Commenta