systemadmin.es > LAMP y web > varnish con geoip en Debian/Ubuntu

varnish con geoip en Debian/Ubuntu

Mediante el modulo libvmod-geoip de varnish podemos añadir reglas en función de la geolocalización de la petición. Vamos a ver cómo instalar el modulo en un Ubuntu 12, pero es igualmente aplicable a cualquier Debian o Ubuntu

Suponiendo que ya tenemos instalado varnish de paquete, primero de todo deberemos instalar la librería de geolocalización, libgeoip:
dependencia:

apt-get install libgeoip-dev

A continuación vamos a necesitar el código fuente del varnish que tengamos instalado, por lo que deberemos añadir (si no lo tenemos ya) el repositorio deb-src. Para ello deberemos mirar en el /etc/apt/sources.list:

deb http://archive.ubuntu.com/ubuntu precise main restricted universe multiverse

Y a partir de la linea de nuestra distribución, simplemente cambiamos el deb por deb-src, quedando:

deb-src http://archive.ubuntu.com/ubuntu precise main restricted universe multiverse

A continuación hacemos el apt-get update:

apt-get update

Y ya podremos descargar el código fuente del varnish:

mkdir -p /usr/local/src
cd /usr/local/src
apt-get  source varnish
cd varnish-3.0.2/

Vamos a necesitar compilarlo (sin instalarlo encima) con el prefijo en /usr:

./configure --prefix=/usr
make

Seguimos descargando el código del módulo:

cd /usr/local/src
git clone https://github.com/lampeh/libvmod-geoip.git

Y lo deberemos compilar indicando el directorio del código fuente del varnish que acabamos de compilar (VARNISHSRC) y el destino del modulo (VMODDIR), que en Ubuntu es encuentra en /usr/lib/varnish/vmods

cd libvmod-geoip/
./autogen.sh 
./configure VARNISHSRC=/usr/local/src/varnish-3.0.2/ VMODDIR=/usr/lib/varnish/vmods
make && make install

Una vez instalado podremos probar el modulo añadiendo un import geoip en VCL. Para probarlo podemos añadir un header (mediante vcl_deliver) con el código del país:

import geoip;
(...)
sub vcl_deliver {
  set resp.http.X-GeoIP = geoip.client_country_code();
(...)

Haciendo un curl podremos ver la cabeceras, entre ellas la X-GeoIP que acabamos de añadir:

$ curl -I 1.2.3.4
HTTP/1.1 403 Forbidden
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1
Date: Tue, 10 Jun 2014 16:11:40 GMT
Age: 0
Connection: keep-alive
X-GeoIP: ES

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>