Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/11/2014, 05:24
djemili
Colaborador
 
Fecha de Ingreso: mayo-2004
Mensajes: 152
Antigüedad: 19 años, 11 meses
Puntos: 26
Pregunta Configurar Drupal y Varnish para ver las IPs de los visitantes

Hola,

tengo una web en drupal que funciona a través del proxy (Reverse proxy) Varnish. Lo que ocurre cuando se usa esta configuración es que los visitantes acceden a varnish y éste hace la petición a drupal. El problema es que Drupal siempre ve la IP del visitante como 127.0.0.1 ya que quien accede realmente es Varnish.

Varnish se puede configurar para que muestre la IP del usuario en las cabeceras HTTP como HTTP_X_FORWARDED_FOR. Eso se hace añadiendo este código en la configuracion de varnish:

Código:
sub vcl_recv {

    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;
        }
    }
// Aqui lo que ya habia dentro de la funcion vcl_recv
}
Este paso lo he hecho bien porque si accedo a un php hecho por mi puedo ver como en la cabecera forwarded aparece mi ip.

Luego Drupal también está preparado para leer la IP de esta cabecera en lugar de la IP habitual en REMOTE_ADDR. Eso se hace modificando la config de drupal en sites/default/settings.php

Código:
$conf['reverse_proxy'] = TRUE;

/**
 * Specify every reverse proxy IP address in your environment.
 * This setting is required if $conf['reverse_proxy'] is TRUE.
 */

$conf['reverse_proxy_addresses'] = array('127.0.0.1');
En princpio con esto ya está. Pero drupal sigue sin reaccionar y no lee las IPs de los usuarios.

El problema principal es que Drupal registra los intentos fallidos de login en una tabla. Ahi guarda la IP que ha hecho el intento. Cuando hay demasiados intentos seguidos desde una misma IP, drupal bloquea esa IP durante unas horas. Total que cuando algun usuario prueba demasiadas veces su password, se bloquea su IP, y como la IP es 127.0.0.1 para todos, se bloquean TODOS los usuarios de la web!! Por eso necesito arreglarlo.

¿Alguna idea de qué me puedo estar dejando o haciendo mal??

¿Despues de cambiar el settings.php de Drupal hay que hacer algun update o reset?

Les agradecere cualquier ayuda que puedan darme :)

Saludos
__________________
Comprar impresoras 3D