Apache mod_remoteip dan akses log

9

Sejak Apache 2.4 saya sudah mulai menggunakan mod_remoteip bukan mod_extract_forwarded untuk menulis ulang alamat klien dari x-forwarded-for yang disediakan oleh server frontend (varnish, squid, apache dll).

Sejauh ini semuanya bekerja dengan baik dengan modul, yaitu php, cgi, wsgi dll ... - alamat klien ditampilkan sebagaimana mestinya, tapi saya tidak bisa menulis alamat klien di log akses (% a,% h,% {c }Sebuah). Tidak berhasil - Saya selalu mendapatkan 127.0.0.1 (penerusan localhost).

Bagaimana cara login alamat ip klien saat menggunakan mod_remoteip?

Pembaruan: IT BEKERJA O_O - lihat jawaban di bawah

GioMac
sumber
Anda mungkin ingin menambahkan konfigurasi spesifik yang Anda gunakan / diuji. Selain itu, meskipun tidak secara terperinci, ini dapat membantu: knowledgevoid.com/blog/2012/01/13/... Saya menganggap Anda memang membaca httpd.apache.org/docs/trunk/mod/mod/mod_remoteip.html#page-header juga? stackexchange memiliki beberapa pertanyaan yang mungkin ingin Anda baca: stackoverflow.com/questions/25455731/…
Dennis Nolte
konfigurasi ulang dibangun, sekarang berfungsi O_O
GioMac

Jawaban:

20

konfigurasi pernis:

if (req.restarts == 0) {
    if (req.http.X-Forwarded-For) {
        set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + client.ip;
    } else {
        set req.http.X-Forwarded-For = client.ip;
    }
}

apache 2.4 bagian konfigurasi:

mod_remoteip:

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1/8

logging (% a melakukan pekerjaan):

LogFormat "%a %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

+

jika ada nginx di depan (mis. terminasi SSL):

server {
    listen       123.123.123.123:443;
    server_name  server.com;
    root         html;

    ssl                  on;
    ssl_certificate      /etc/pki/httpd/site/chain.crt;
    ssl_certificate_key  /etc/pki/httpd/site/private.key;

    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass   http://127.0.0.1:6081;
        proxy_set_header Host $http_host;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}
GioMac
sumber
1
Jika Anda menerima jawaban ini, Anda harus memberi hadiah, meskipun itu jawaban Anda sendiri.
mc0e
Bisakah Anda memperbarui ini, atau beri kami variasi untuk http.cf-connecting-ip dari CloudFlare? Belum beruntung berhasil, maaf.
Ruslan Abuzant
Anda seharusnya menggunakan $ proxy_add_x_forwarded_for daripada $ remote_addr untuk Nginx X-Forwarded-For. Itu melakukan fungsi yang sama dengan contoh Varnish, sedangkan $ remote_addr tidak termasuk nilai X-Forwarded-For sebelumnya
Andy
4

Menurut dokumentasi mod_remoteip , modul harus hanya mengganti alamat IP klien, tetapi hanya ketika RemoteIPHeader x-forwarded-fordiatur ( doc ). Pastikan juga, logging vhost Anda menggunakan CustomLog yang telah Anda tetapkan.

Sgaduuw
sumber