Apache mod_remoteip ve erişim günlükleri


9

Apache yana 2.4 ı kullanmaya başladıktan sonra mod_remoteip yerine mod_extract_forwarded istemci adresini yeniden yazma için x-iletilen-için ön uç sunucularda (vernik, kalamar, apache vb) tarafından sağlanan.

Şimdiye kadar her şey modüller ile iyi çalışıyor, yani php, cgi, wsgi vb ... - istemci adresleri olması gerektiği gibi gösterilir, ancak erişim günlüklerine istemci adresi yazamadım (% a,% h,% {c } a). Şans yok - Her zaman 127.0.0.1 alıyorum (localhost forward ex.).

Mod_remoteip kullanırken istemcinin ip adresi nasıl günlüğe kaydedilir?

Güncelleme: BT İŞLERİ O_O - aşağıdaki cevaba bakınız


kullandığınız / test ettiğiniz spesifik yapılandırmayı eklemek isteyebilirsiniz. Ayrıca, ayrıntılarda olmasa da, bu yardımcı olabilir: knowledgevoid.com/blog/2012/01/13/… httpd.apache.org/docs/trunk/mod/mod_remoteip.html#page-header de okuduğunuzu varsayıyorum ? stackexchange, okumak isteyebileceğiniz birkaç soruya sahiptir: stackoverflow.com/questions/25455731/…
Dennis Nolte

yeniden yapılandırıldı, şimdi çalışıyor O_O
GioMac

Yanıtlar:


20

vernik yapılandırması:

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 yapılandırma bölümleri:

mod_remoteip:

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1/8

günlüğe kaydetme (% a iş yapar):

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

+

önünde bir nginx varsa (ör. SSL sonlandırma):

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
Bu cevabı kabul ederseniz, kendi cevabınız olsa bile ödülünüzü vermelisiniz.
mc0e

Lütfen bunu güncelleyebilir misiniz, yoksa CloudFlare'den http.cf-connect-ip varyasyonunu verir misiniz? Üzgünüm, işe yarayan bir şansım olmadı.
Ruslan Abuzant

Nginx X-Forwarded-For için $ remote_addr yerine $ proxy_add_x_forwarded_for kullanmalısınız. Varnish örneğiyle aynı işlevi yerine getirirken, $ remote_addr, önceki X-Forwarded-For değerlerini içermez
Andy

4

Mod_remoteip'in belgelerine göre , modül sadece istemci IP adresini değiştirmelidir, ancak sadece RemoteIPHeader x-forwarded-forayarlandığında ( doc ). Ayrıca, hayaletinizin günlüğünün tanımladığınız CustomLog'u kullandığından emin olun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.