Apache mod_remoteip et journaux d'accès


9

Depuis Apache 2.4, j'ai commencé à utiliser mod_remoteip au lieu de mod_extract_forwarded pour réécrire l'adresse client à partir de x-forwarded-for fourni par les serveurs frontaux (vernis, squid, apache, etc.).

Jusqu'à présent, tout fonctionne bien avec les modules, c'est-à-dire php, cgi, wsgi etc ... - les adresses des clients sont affichées comme elles devraient l'être, mais je n'ai pas pu écrire l'adresse du client dans les journaux d'accès (% a,% h,% {c }une). Pas de chance - je reçois toujours 127.0.0.1 (localhost forward ex.).

Comment enregistrer l'adresse IP du client lors de l'utilisation de mod_remoteip?

Mise à jour: IT WORKS O_O - voir la réponse ci-dessous


vous voudrez peut-être ajouter la configuration spécifique que vous utilisez / testée. De plus, bien que cela ne soit pas détaillé, cela pourrait aider: knowledgevoid.com/blog/2012/01/13/… Je suppose que vous avez lu httpd.apache.org/docs/trunk/mod/mod_remoteip.html#page-header également ? stackexchange a quelques questions que vous voudrez peut-être lire: stackoverflow.com/questions/25455731/…
Dennis Nolte

configuration reconstruite, maintenant ça marche O_O
GioMac

Réponses:


20

configuration du vernis:

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

sections de configuration d'apache 2.4:

mod_remoteip:

RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 127.0.0.1/8

journalisation (% a fait le travail):

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

+

s'il y a un nginx devant (ex. terminaison 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
Si vous acceptez cette réponse, vous devez attribuer la prime, même si c'est votre propre réponse.
mc0e

Pourriez-vous s'il vous plaît mettre à jour cela, ou nous donner la variation pour http.cf-connection-ip de CloudFlare? Je n'ai pas eu de chance de le faire fonctionner, désolé.
Ruslan Abuzant

Vous devez réellement utiliser $ proxy_add_x_forwarded_for au lieu de $ remote_addr pour Nginx X-Forwarded-For. Cela fait la même fonctionnalité que l'exemple Varnish, alors que $ remote_addr n'inclut pas les valeurs X-Forwarded-For précédentes
Andy

4

Selon la documentation de mod_remoteip , le module doit simplement remplacer l'adresse IP du client, mais uniquement lorsqu'il RemoteIPHeader x-forwarded-forest défini ( doc ). Assurez-vous également que la journalisation de votre vhost utilise le CustomLog que vous avez défini.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.