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


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;
    }
}

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.