2012-09-03 10 views
10

Ho un sito Web in esecuzione dietro Cloudflare, che è un proxy inverso. Ciò significa che ottengo sempre uno o due indirizzi IP nei miei log di accesso.Registrare un'intestazione HTTP nei registri di accesso Apache2

Tuttavia, Cloudflare fornisce l'indirizzo IP del visitatore nelle intestazioni della richiesta, che presumo di poter registrare al posto di quello standard in un registro di accesso.

So usare CustomLog, ma c'è un modo per salvare un'intestazione HTTP in un registro di accesso di Apache?

Grazie.

risposta

17

Aye - ha uno sguardo ai documenti - http://httpd.apache.org/docs/2.2/mod/mod_log_config.html specificamente la voce per

%{Foobar}i 

Quale sarà netto che:

Il contenuto di Foobar: riga di intestazione (s) nella richiesta inviata al server . Le modifiche apportate da altri moduli (ad esempio mod_headers) influiscono su questo. Se ti interessa l'intestazione della richiesta precedente alla maggior parte dei moduli , utilizza mod_setenvif per copiare l'intestazione in una variabile di ambiente interna e registrare tale valore con lo % {VARNAME} sopra descritto.

Quindi si potrebbe aggiungere un po 'di solito la voce come" ...% {X-Forwarded-For-IP} i alla voce CustomLog.

Sostituire 'X-Forwarded-For-IP' per whateever il servizio CloudFlare si ottiene (che di solito è qualcosa come '' "CF-Collegamento-IP" ''); ad esempio

LogFormat "%v %{CF-Connecting-IP}i (via cloudflare:%h) %l %u %t \"%r\" %>s %b" cloudflare 
CustomLog "|rotatelog.. etc" cloudflare 

per quanto riguarda il 'TransferLog' - si veda la nota vicino direttiva TransferLog - che raccoglie la versione definita più recente

Dw.

Problemi correlati