Restricción de acceso a tu sitio con Nginx
Filtrado de IP, protección con contraseña y bloqueo de solicitudes — todo en un mismo lugar.
Controlar quién puede acceder a qué en tu servidor es una parte fundamental para mantener una aplicación web segura. Nginx te ofrece un conjunto de herramientas sólido: reglas simples basadas en IP, HTTP Basic Auth, políticas de acceso combinadas y mucho más.
Consejo
En los VPS y los servidores dedicados tienes control total sobre la configuración de Nginx y puedes aplicar cualquiera de los métodos descritos a continuación.
1. Bloquear el acceso a directorios sensibles
Para impedir el acceso directo a directorios como .svn que no deberían ser públicos:
location ~ /.svn/ {
deny all;
}
2. Control de acceso basado en IP
Usa allow y deny para crear una lista blanca en secciones específicas de tu sitio:
location /server-status {
allow 111.111.111.111;
allow 11.11.11.11;
deny all;
}
Solo las IPs listadas tienen acceso — el resto es rechazado.
3. Protección con contraseña (HTTP Basic Auth)
¿Necesitas poner una pantalla de login delante de una sección privada? Esta es la forma más directa:
location /admin/ {
auth_basic "Enter password to access";
auth_basic_user_file /etc/nginx/basic.auth;
}
4. Protección combinada: lista blanca de IP + contraseña
La directiva satisfy any permite el acceso a un visitante si supera cualquiera de las comprobaciones — IP de confianza o credenciales válidas. Útil cuando quieres que tu equipo acceda sin contraseña, pero también quieres dar acceso a quienes la conocen:
location /admin/ {
satisfy any;
allow 111.111.111.111;
allow 11.11.11.11;
deny all;
auth_basic "Enter password to access";
auth_basic_user_file /etc/nginx/basic.auth;
}
Nuestros servicios y productos
5. Devolver 404 para archivos estáticos inexistentes
Evita que Nginx filtre información sobre la estructura de tu servidor devolviendo un 404 limpio para cualquier archivo estático que no exista en disco:
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
6. Redirección basada en IP
Puedes redirigir visitantes de forma condicional según el origen de su solicitud:
location / {
if ($remote_addr != 111.111.111.111) {
return 301 https://$host$request_uri;
}
}
Todas las solicitudes que no provengan de
111.111.111.111serán redirigidas ahttps://$host$request_uri.
7. Protección contra fuerza bruta con iptables
Para una capa adicional de defensa a nivel de red, puedes usar iptables para bloquear temporalmente las IPs que bombardean tu servidor con demasiadas solicitudes:
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \
-m recent --name bhttp --set
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -m state --state NEW \
-m recent --name bhttp --update --seconds 120 \
--hitcount 360 -j DROP
iptables -A INPUT -p tcp --syn --dport 80 -i eth0 -j ACCEPT
Esta regla bloquea cualquier IP que abra más de 360 nuevas conexiones en una ventana de 120 segundos.
Aplicar los cambios
Tras editar la configuración de Nginx, recarga el servicio para aplicar los cambios sin interrumpir las conexiones activas:
systemctl reload nginx
# o bien
service nginx reload
Ayuda
¿Tienes dudas o necesitas ayuda? Escríbenos a través del sistema de tickets — siempre estamos aquí para ayudarte!