Acelera tu web con Nginx como caché de proxy inverso

¿Que es una caché de Proxy Inverso?

En informática, un proxy inverso es un tipo de servidor situado entre el cliente y el servidor o servidores web que recupera los recursos de estos. Estos recursos se devuelven al cliente como si los hubiera devuelto el propio servidor web. Básicamente es un intermediario que puede actuar de distintos roles.

¿Por que Nginx?

Igual que Varnish, Nginx es capaz de actuar de caché web pero no todos los administradores de sistemas conocen esta faceta. Nginx puede servir contenido estático directamente de una forma muy eficiente y puede actuar como cache colocado como frontal, al igual que lo haría Varnish. Mientras Varnish su único cometido es el de actuar como cache con avanzadas opciones, Nginx es polivalente y nos ofrece varias alternativas.

Montando la infraestructura

Instalar Nginx

Para instalar nginx en nuestro servidor simplemente ejecutamos el siguiente comando:

sudo apt-get install nginx

Configurar el servidor web

Lo primero de todo debemos de tener en cuenta que el servidor web que leerá los recursos de nuestro sistema de ficheros ya no debe de escuchar en el puerto 80, pues en su lugar se pondrá el proxy.

mkdir /var/www/assets
server {
listen 81;
server_name {{tu ip o subdominio}};
access_log /var/log/nginx/static-server.log;

location ~* \. (?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm|htc)$ {
expires 12h;
root /var/www/assets;
add_header Cache-Control "public";
}
}

Configurar el proxy caché

Para configurar nginx para que actúe de cache vamos a usar la directiva proxy_cache_path. Esta directiva indica un directorio de tu máquina donde se almacenará todos los recursos que se vayan cacheando .

#/etc/nginx/sites-enabled/caching-server
proxy_cache_path /tmp/nginx levels=1:2 keys_zone=assets_zone:10m inactive=60m;
proxy_cache_key "$scheme$request_method$host$request_uri";
server {
listen 80;
server_name {{tu ip o subdominio}};
access_log /var/log/nginx/caching-server.log;
location /static/ {
proxy_cache assets_zone;
add_header X-Proxy-Cache $upstream_cache_status;
include proxy_params;
proxy_pass http://localhost:81/;
}
}

Enlaces relacionados

https://serversforhackers.com/nginx-caching

--

--

Full Stack Web Developer — adrianalonso.es

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store