Permitir acceso solo a ciertas IPs.
Nginx incluye un módulo llamado ngx_http_access_module, que permite controlar el acceso a hosts según la dirección IP de origen del cliente. Este módulo permite aceptar o denegar solicitudes a hosts. La sintaxis típica es:
Las reglas se evalúan en orden, de arriba hacia abajo, hasta encontrar la primera coincidencia. En este ejemplo, se permiten las subredes `10.1.1.0/16` y `192.168.1.0/24`, excepto la IP concreta `192.168.1.1`. También se acepta tráfico desde la subred IPv6 `2001:0db8::/32`. El resto del mundo queda denegado.
1. Nunca edites directamente `nginx.conf` para modificar IPs. En su lugar, crea un archivo aparte con la lista de IPs que deseas permitir o bloquear. Nómbralo, por ejemplo, nginx-blockips.conf.
2. Agrega una línea para incluir este archivo dentro del bloque `http {}` de tu `nginx.conf`:
3. En ese archivo (nginx-blockips.conf), puedes definir las reglas:
4. Guarda los cambios, luego verifica la configuración:
Si todo está correcto, recarga Nginx:
Y ya puedes probar a acceder desde distintas IPs para comprobar el comportamiento de NGINX desde peticiones enviadas desde diferentes orígenes.
Por defecto, Nginx muestra una página de error 403 muy básica a los clientes cuya IP de origen está incluida en una lista de acceso como no permitida. Para personalizarla:
1. Crea un archivo HTML en el directorio de tu sitio (por ejemplo, `error403.html`):
2. Añade en tu bloque `server {}`:
Con esto, Nginx mostrará esa página personalizada en lugar de la predeterminada.

Nginx incluye un módulo llamado ngx_http_access_module, que permite controlar el acceso a hosts según la dirección IP de origen del cliente. Este módulo permite aceptar o denegar solicitudes a hosts. La sintaxis típica es:
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
Las reglas se evalúan en orden, de arriba hacia abajo, hasta encontrar la primera coincidencia. En este ejemplo, se permiten las subredes `10.1.1.0/16` y `192.168.1.0/24`, excepto la IP concreta `192.168.1.1`. También se acepta tráfico desde la subred IPv6 `2001:0db8::/32`. El resto del mundo queda denegado.
¿Cómo implementarlo de forma segura?
1. Nunca edites directamente `nginx.conf` para modificar IPs. En su lugar, crea un archivo aparte con la lista de IPs que deseas permitir o bloquear. Nómbralo, por ejemplo, nginx-blockips.conf.
2. Agrega una línea para incluir este archivo dentro del bloque `http {}` de tu `nginx.conf`:
include /ruta/a/tu/nginx-blockips.conf;
3. En ese archivo (nginx-blockips.conf), puedes definir las reglas:
deny 192.168.1.1;
deny 192.168.1.2;
deny 192.168.2.0/24;
allow 192.168.1.0/24;
deny all;
4. Guarda los cambios, luego verifica la configuración:
nginx -t
Si todo está correcto, recarga Nginx:
nginx -s reload
Y ya puedes probar a acceder desde distintas IPs para comprobar el comportamiento de NGINX desde peticiones enviadas desde diferentes orígenes.
Personalizar la página de error 403
Por defecto, Nginx muestra una página de error 403 muy básica a los clientes cuya IP de origen está incluida en una lista de acceso como no permitida. Para personalizarla:
1. Crea un archivo HTML en el directorio de tu sitio (por ejemplo, `error403.html`):
<html>
<head><title>Error 403 – Acceso denegado</title>
</head>
<body>
No tienes permiso para acceder a esta página. No intentes de nuevo.
</body>
</html>
2. Añade en tu bloque `server {}`:
error_page 403 /error403.html;
location = /error403.html {
allow all;
}
Con esto, Nginx mostrará esa página personalizada en lugar de la predeterminada.