Problemas comunes y precauciones con CloudFlare.

CloudFlare sin duda se ha vuelto popular. Sobre todo últimamente por su ayuda a "parar" un ataque DDoS de 120Gbps.

CloudFlare en si, se hace llamar CDN. Es una red de entrega de contenidos, que copia cachea ciertos recursos en sus servidores (23 data centers) para responder en un menor tiempo al cliente. Tiene otras opciones como "restricción" de trafico (en donde literalmente puedes prohibir el trafico de un país hacia tu pagina web), optimizacion (minimify, compress etc..), Analitycs (se dice que: exageran..) y algunas apps (por ejemplo: mostrar un mensaje a visitantes con navegadores obsoletos).


Puesto que es gratis muchos ya se han unido a sus clientes.. sin embargo hay ciertas precauciones que hay que tomar y que curiosamente NO te indican así a la sencilla. Aquí resumo algunas de ellas..

REMOTE_ADDR y/o los logs server-side

Puesto que CloudFlare actúa como un proxy, en el momento en el que se active, habrá un cambio brusco a la hora de loguear direcciones IP. Dicho simple: En vez de ver la dirección IP del visitante, veras la de CloudFlare.

En lenguajes server-side esto se puede corregir de manera simple, puesto que CloudFlare, te envía un par de headers (cabeceras HTTP) que te ayuden. E aquí una muestra (print_r($_SERVER)):
[HTTP_CF_CONNECTING_IP] => 123.456.789.000
[HTTP_CF_IPCOUNTRY] => ES
[HTTP_CF_RAY] => dasda2342adasd
[HTTP_CF_CIP_TAG] => 0
[HTTP_CF_VISITOR] => {"scheme":"http"}
[HTTP_CF_WAN_ID] => 0
[HTTP_CF_WAN_ENCODING] => 0
Como podéis observar las 2 que mas nos interesan serian HTTP_CF_CONNECTIONG_IP y HTTP_CF_IPCOUNTRY. La primera, retorna la IP del visitante mientras que la segunda, su país. Así por las buenas, su utilizamos CloudFlare, no tenemos que utilizar servicios (de pago) de terceros para detectar el país del visitante :P

Nota: La cabecera X-Forwarded-From también retornara la IP del visitante sin embargo, no te la recomiendo puesto que se puede editar via cliente y puede suponer un riesgo de seguridad hacia tu sitio web.

En base a esto, podemos construir una sencilla función que se encargue de detectar si utilizamos CloudFlare y en base a la respuesta, retornar una u otra.
<?php
function remote_addr(){
   if(!empty($_SERVER['HTTP_CF_CONNECTING_IP'])){
      return $_SERVER['HTTP_CF_CONNECTING_IP'];
   } else {
      return $_SERVER['REMOTE_ADDR'];
   }
}
?>

A parte de esto, hay una colección completa de plugins, mods y tutoriales para otras platformas y cms (Apache, Lighttpd, IIS, vbulletin) aquí: https://support.cloudflare.com/forums/21318827

Adsense, Analitycs ... publicidad/visitas afectada

He leído muchas quejas sobre como CloudFlare "destruye" la publicidad (adsense y otros) y las visitas hacia la pagina bajan drásticamente. Bien, este tema da mucho de que hablar (según mi experiencia con CloudFlare) pero intentare resumirlo:

Las visitas bajan drásticamente

Esto principalmente se debe a 3 cosas:

1. Utilizas un script que mide las visitas server side y/o utilizas servicios que se basan en logs server-side. Como he explicado mas arriba, CloudFlare actúa como proxy y por tanto, la IP cambiara por la suya. Puedes solucionar esto, con los mods/tutoriales/plugins que dejan en su pagina web (enlace mas arriba).

2. Utilizas un javascript/script client-side pero tienes activado Auto Minify, Rocket Loader y/o Website Preload. Estas "características" de CloudFlare, pueden corromper/modificar el comportamiento normal de scripts client-side. Puedes desactivar estas características desde CloudFlare settings -> Perfomace Settings de tu dominio.

3. No utilizas ninguno de los anteriores pero tienes el Basic protection level en Low/Medium/High/Im under Attack!. El "basic protection" (que se puede encontrar en la pestaña Security Settings de la configuración de tu dominio) filtra las visitas. Si CloudFlare sospecha de algún visitante, le hará pasar por un captcha. En ese momento el visitante se puede desesperar y abandonar el sitio. Para desactivar esto (siempre y cuando no te atacan) pon la opcion en modo: Essentially Off. Ademas, asegurarte de que no estas filtrando ningún PAIS/rango de IP's en el Threat control.

Los scripts de publicidad desaparecen o no generan clicks

Esto según tengo entendido se puede deber principalmente a 2 cosas.

1. Igual que he mencionado mas arriba: Tienes activado Auto Minify, Rocket Loader y/o Website Preload. Estas "características" de CloudFlare, pueden corromper/modificar el comportamiento normal de scripts client-side. Puedes desactivar estas características desde CloudFlare settings -> Perfomace Settings de tu dominio.

2. Publicidad irrelevante. La mayoría de los servicios que ofrecen publicidad por click, tienen bots que visitan tu sitio para sacar las palabras clave y así mostrar publicidad relevante al visitante. SI la política de bloqueo (Threat control) o el Protection Level llegan a bloquear ese bot, la publicidad puede desaparecer, mostrar cosas irrelevantes o incluso bloquear tu cuenta. Si crees que los clicks han disminuido y se debe a CloudFlare, asegurante de visitar el Threat control y buscar el user-agent o IP del bot de tu "anunciante" (Los user-agent de Google se pueden encontrar aquí).

Ademas usa la lógica: Si Google(Adsens) tiene sus bots (IPs) en EEUU y bloqueas a ese país en el Threat Control, el bot no podrá acceder al sitio...

Sitio "offline" incluso aunque el servidor responde bien

Aveces, puede pasar que CloudFlare mostrara que tu sitio esta fuera de linea incluso aunque tu hosting si responde bien. Cuando esto pasa se suele deber a 2 cosas:

1. Tu servidor bloquea las conexiones de CloudFlare. Puesto que CloudFlare sera el "único" visitante de "tu" servidor este puede llegar a bloquearlo por demasiados requests en poco tiempo. Si te pasa esto, ponte en contacto con el administrador de tu hosting y pregunta si pueden incluir las IPs de CloudFlare en la lista blanca.
https://support.cloudflare.com/entries/22036452

2. Tu hosting o script retorna error 502 o 504 Cuando tu sitio web retorna un error del tipo 502/504, CloudFlare lo considerara como fuera de linea. Puedes pausar CloudFlare o ponerlo en modo "Developer". En unos 15-20 minutos, CloudFlare dejara de estar activo, y así podrás solucionar errores.
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.2
https://support.cloudflare.com/entries/22050652-What-does-Always-Online-do-

Saludos

Comentarios

Entradas populares de este blog