Bloquear direcciones IP con Nginx

Generalidades

Los servidores Nginx te permiten controlar el acceso por IP a tu sitio web creando un archivo de configuración personalizado. Puedes ver las direcciones IP que han visitado tu sitio web consultando tu archivo access.log. Los usuarios cuya dirección IP esté bloqueada verán un error 403 Forbidden al visitar tu sitio web.

Este artículo explica cómo crear este archivo e incluye ejemplos de código que puedes agregarle.

Revisa la siguiente página para obtener más detalles sobre el módulo location de Nginx:

Bloquear IPs

Los siguientes pasos crean un archivo llamado access.conf, que se usa para agregar los ejemplos de código a continuación.

  1. Revisa el archivo Ubicaciones de archivos de configuración de Nginx para crear tu directorio /nginx/example.com local.
  2. Cambia a este directorio:
    [server]$ cd ~/nginx/example.com
  3. Crea un archivo llamado access.conf.
  4. Agrega el código de uno de los ejemplos a continuación.
  5. Recarga Nginx para que los cambios tomen efecto.

Ejemplos de código

Bloquear una IP desde tu sitio web

El siguiente código bloquea la dirección IP de 1.2.3.4 para impedir el acceso a tu sitio web.

location / {
  deny 1.2.3.4;
}

Bloquear una IP desde un subdirectorio

El siguiente código bloquea la dirección IP de 1.2.3.4 para impedir el acceso a un subdirectorio en tu sitio llamado /blog.

location /blog/ {
  deny 1.2.3.4;
}

Permitir que una sola IP acceda a tu sitio web

El siguiente código permite que una única dirección IP acceda a tu sitio web mientras bloquea a todas las demás. Esto puede ser útil si estás construyendo tu sitio web y no deseas que nadie lo vea mientras estás trabajando en él.

La línea deny all; debe aparecer después de todas las direcciones IP en la lista.

Si es la primera línea, TODAS las direcciones IP serán bloqueadas.

location / {
  allow 1.2.3.4;
  deny all;
}

Múltiples reglas

También puedes combinar varias reglas. El siguiente ejemplo permite que una sola dirección IP acceda al subdirectorio /blog mientras bloquea a todas las demás del sitio web.

location /blog {
  allow 1.2.3.4;
  deny all;
}

location / {
  deny all;
}

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?