---
title: Nginx: Protección hotlink mediante reescritura - isla Studio
url: https://isla-stud.io/howtos-anleitungen/nginx-hotlink-schutz/
fecha: 2016-01-31
---

# Nginx: Hotlink protección a través de reescritura

Ni siquiera hay un backlink a tu propia web, a no ser que el ladrón de contenidos se haya limitado a copiar y pegar todo el contenido del código fuente en su web. Entonces puede ocurrir que haya enlazado en algún sitio a otro de sus propios posts con la URL completa. Y este enlace sigue estando contenido en el texto. Pero primero respira hondo y lo primero es lo primero:



¿Qué es en realidad un hotlink?



Un hotlink es, por ejemplo, la integración de una imagen mediante un enlace directo a la URL existente. Sin descargar previamente la imagen, subirla a su propio espacio web o servidor y enlazarla desde allí.



En general, los hotlinks no son malos. Al menos no si el hotlinking se ha acordado entre ambas partes o si eres un servicio de subida de imágenes, pero en la mayoría de los casos no eres un servicio de subida de imágenes, sino simplemente alguien que paga su alojamiento web cada mes y tiene un cierto límite de tráfico. Y aquí llegamos al quid de la cuestión: si otra persona muestra archivos multimedia en su página de inicio que están ubicados en su servidor web, su servidor servirá cada una de estas peticiones de terceros, porque eso es lo que hacen los servidores. Sirven (serve, provide, serve, serve).



Ahora el ladrón de contenidos tiene una imagen gratuita en su sitio web por la que no se genera/carga tráfico en su propio servidor. Este tráfico (carga del servidor) se factura al ladrón, es decir, a usted, y cuesta recursos del servidor cada vez que un visitante navega hasta el sitio del ladrón de contenidos y la imagen se muestra en su navegador web. Dependiendo de cuánto tráfico de visitantes tenga el ladrón de contenidos en su sitio web, esto no tiene ninguna gracia.



Hoy me gustaría mostrarte cómo puedes configurar tu propio servidor web NGINX para que no sirva estas peticiones externas como se espera, sino que sirva a los visitantes del sitio web del ladrón de contenidos una imagen diferente, de modo que puedas revertir el supuesto daño y beneficiarte de él y, si estás realmente enfadado, conseguir una ventaja sobre el ladrón: ¡conseguir que los visitantes vayan a tu propio sitio web!



¡Cómo convertir NGINX en un enemigo invencible de los hotlinks!



Este es el plan:



 Queremos una solución integral que funcione para todos los dominios. Para no tener que personalizar cada configuración individual de vHost (sites-available). El enlace de solicitud debe reescribirse y, en su lugar, debe servirse una imagen específica y diferente a la página del ladrón. Debe funcionar con Google Image Search y otros motores de búsqueda con una función de búsqueda de imágenes, en lugar de prohibir por completo el hotlinking. De lo contrario, Google Image Search ya no mostrará las imágenes reales, sino sólo la imagen de sustitución.



Solución al robo de imágenes



Estas pocas líneas de código son, en última instancia, la solución al problema del robo de imágenes. En la siguiente sección encontrarás cómo y dónde colocar el código.



location ~* \.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|css|rss|atom|js|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf|swf)$ {
  add_header "Access-Control-Allow-Origin" "*";
  access_log off;
  log_not_found off;
  expires max;
  valid_referers none blocked ~.google. ~.bing. ~.yahoo. ~.yandex. server_names ~($host);
    if ($invalid_referer) {
      rewrite (.*) /hotlink/eight-content-and-image-stealing.png redirect;
      }
}
#hotlink fin del bucle de redirección
location = /hotlink/acht-inhalts-und-bilderklau.png { }



¿Qué hace el código?



~ se utiliza para tener en cuenta mayúsculas/minúsculas, mientras que ~* ignora mayúsculas/minúsculas.



NGINX comprueba la regla de ubicaciones en el orden en que se insertan las expresiones regulares. Esto significa que las instrucciones de la cabecera de caché de los archivos multimedia y las instrucciones de nuestra protección contra hotlinks deben estar en el mismo bloque.



location = /hotlink/achtung-inhalts-und-bilderklau.png { } es necesaria para que la nueva petición de la imagen de sustitución no provoque un bucle de reenvío infinito:
El sitio de robo de imágenes envía la solicitud de imagenA → nuestro NGINX redirige la solicitud de imagen de sustitución → el sitio de robo de imágenes envía la solicitud de imagen de sustitución → nuestro NGINX redirige la solicitud de imagen de sustitución, pero no sirve → y así sucesivamente....







$host es una variable que hace que esta instrucción sea utilizable globalmente y funcione bajo todos los dominios vHost del servidor web. La siguiente URL es válida para todos los dominios: http://$host/hotlink/achtung-inhalts-und-bilderklau.png



Sólo debe crear el directorio /hotlink bajo cada dominio y almacenar un archivo de imagen con el nombre: achtung-inhalts-und-bilderklau.png en este directorio. Si lo desea, también puede cambiar el nombre del archivo y del directorio. Sólo tiene que adaptar el código en consecuencia.



Para integrar la regla de localización





Así es como se procede para dotar a su servidor web NGINX de esta protección especial hotlink contra el robo de imágenes.


Tiempo total: 30 minutos


Preparativos: Crear y subir un gráfico de intercambio
En primer lugar, cree un gráfico que los visitantes del sitio web del ladrón deban ver y cárguelo en el directorio deseado de su servidor web. Anote la URL del gráfico.



Personalice la configuración de ubicaciones del servidor web NGINX
En su servidor, vaya al directorio /etc/nginx/common/ y busque la configuración de ubicaciones incluida en el bloque de servidor de su vhost, que contiene reglas para la ubicación definida en el código anterior. Por regla general, ya existirá un bloque de reglas para la ubicación especificada. Si no es así, simplemente inserte el código anterior como un nuevo bloque de reglas en el archivo correcto; si el bloque ya existe, inserte sólo las reglas anteriores sin la envoltura de ubicaciones.



Guardar y volver a cargar la configuración del servidor web NGINX
A continuación, guarde el archivo de configuración con el bloque de ubicaciones ampliado en el servidor y pruebe primero la nueva configuración a través del terminal SSH con nginx -tSi la prueba se realiza sin problemas, reinicie su NGINX con el comando service nginx restart.










Pruebe su protección contra hotlinks



Aquí he escrito una herramienta que puede utilizar para probar su configuración de protección hotlink. Introduzca la URL directa de un gráfico en su servidor nginx en el campo de entrada. Idealmente, la imagen de reemplazo debería aparecer en el campo de salida de abajo. Si aparece la imagen de la URL introducida, debe comprobar de nuevo su protección hotlink.



Si desea realizar la prueba varias veces seguidas para la misma URL de imagen, debe borrar la caché del navegador después de cada prueba y volver a cargar esta página.



 Comprobar la URL de la imagen







¿Aún tiene preguntas? Entonces no dude en utilizar la función de comentarios que aparece debajo de este artículo.



Comparta este artículo en su página de Facebook, Twitter, Google+ u otra plataforma social de su elección. A continuación encontrará los botones para compartir. Compartir es fácil y rápido y se lo agradecería mucho.