
📅 Publicado el 1 de septiembre, 2026 · Por Equipo RedServicio
Por qué bloquear IPs .htaccess y en Nginx es importante
Bloquear IPs .htaccess o en la configuración de Nginx es de esas medidas de seguridad que cuesta cinco minutos y ahorra muchos dolores de cabeza. ¿La razón? Un ataque de fuerza bruta, una oleada de spam de bots, un competidor rastreando tu sitio sin permiso… Todo eso pasa por tu IP. Y si controlas quién puede llegar a tu servidor, controlas el problema antes de que empiece.
Aquí va la guía práctica, con código listo para copiar en ambos servidores y algunos avisos sobre cómo no bloquear por accidente a usuarios que no tienen nada que ver.
Bloquear IPs usando .htaccess en Apache
El archivo .htaccess es configuración distribuida: Apache lo lee en cada petición. Eso lo hace ideal para cambios inmediatos, sin reiniciar nada. Edítalo siempre con un editor de texto plano y no rompas la sintaxis (una coma de más y el sitio se cae).
Método con Order y Allow/Deny (Apache 2.2)
Si tu servidor todavía corre Apache 2.2, la sintaxis clásica es esta:
Order allow,deny
Allow from all
Deny from 203.0.113.45
Deny from 198.51.100.0/24
Con eso, la IP 203.0.113.45 y todo el rango 198.51.100.0/24 se llevan un 403 Forbidden al intentar entrar.
Método con Require (Apache 2.4)
Apache 2.4 cambió el control de acceso al módulo mod_authz_host:
<RequireAll>
Require all granted
Require not ip 203.0.113.45
Require not ip 198.51.100.0/24
</RequireAll>
Bloquear por país o rangos amplios
Puedes usar listas CIDR de rangos por país (IP2Location, por ejemplo) y apilar muchas líneas «Require not ip». Funciona, pero ojo: si la lista pasa de unos pocos cientos de entradas, muévela a la configuración principal del virtualhost. Apache procesa el .htaccess en cada petición, y el rendimiento se nota.
Bloquear IPs usando Nginx
Aquí no hay .htaccess. El bloqueo se configura en el archivo principal del servidor, normalmente /etc/nginx/nginx.conf, o en los archivos dentro de /etc/nginx/conf.d/ o /etc/nginx/sites-available/.
Directivas deny y allow
Nginx evalúa allow y deny de arriba hacia abajo y se detiene en la primera coincidencia:
location / {
deny 203.0.113.45;
deny 198.51.100.0/24;
allow all;
}
Las IPs bloqueadas recibirán un 403. Tras los cambios, recarga:
sudo nginx -t
sudo systemctl reload nginx
nginx -t valida la sintaxis antes de recargar. Ejecútalo siempre. Un error tipográfico ahí puede tumbar el sitio entero.
Bloquear una IP solo en una sección concreta
Una ventaja clara de Nginx: el bloqueo puede ser quirúrgico. Solo al panel de administración, por ejemplo:
location /wp-admin {
deny 203.0.113.45;
allow all;
}
Listas geográficas con ngx_http_geo_module
Para bloqueos grandes, el módulo geo te deja definir variables con cientos de rangos y aplicar después una única regla:
geo $bloqueado {
default 0;
198.51.100.0/24 1;
203.0.113.45 1;
}
server {
if ($bloqueado) { return 403; }
}
Consejos prácticos y buenas prácticas
- Identifica las IPs correctas: revisa los logs de acceso (access.log) antes de bloquear. Distingue tráfico legítimo de ataques reales; no es siempre obvio.
- Cuidado con las IPs dinámicas y compartidas: bloquear la IP de un proveedor de internet o de un servicio compartido puede afectar a usuarios inocentes.
- Ojo con Cloudflare y los proxies: si usas un CDN, el log mostrará la IP del proxy, no la del visitante real. Necesitarás restaurar la IP original (mod_remoteip en Apache o set_real_ip_from en Nginx).
- Prueba tras aplicar cambios: accede desde una VPN o desde otra red para confirmar el bloqueo. Y guarda siempre una copia del archivo antes de modificarlo.
- Fail2ban como complemento: para bloqueos automáticos y temporales ante intentos de intrusión, Fail2ban analiza los logs y aplica las reglas de firewall por ti.
Preguntas frecuentes
¿El bloqueo es inmediato? Con .htaccess sí, aplica al instante. En Nginx necesitas recargar la configuración con systemctl reload nginx.
¿Qué error ve el usuario bloqueado? Por defecto un 403 Forbidden, aunque puedes personalizar la página de error con la directiva error_page en Nginx o ErrorDocument en Apache.
¿Puedo bloquear usuarios por User-Agent? Sí, ambas plataformas lo permiten. Pero es menos fiable: un User-Agent se suplanta en segundos.
Conclusión
Bloquear direcciones IP concretas es gratis, rápido de aplicar y muy eficaz contra ataques dirigidos y tráfico indeseado. En Apache, el .htaccess te da flexibilidad inmediata (usa la sintaxis Require si estás en 2.4), mientras que Nginx brilla por rendimiento y por cómo maneja listas grandes de rangos. Antes de bloquear, analiza tus logs; no quieras excluir a clientes legítimos por un falso positivo. Complementa con Fail2ban y un hosting seguro. En RedServicio encontrarás hosting con configuración optimizada, copias de seguridad automáticas y soporte técnico 24/7 para acompañarte en cada paso.
Equipo RedServicio
Artículos escritos y revisados por nuestro equipo técnico especializado en hosting e infraestructura web en España.
¿Listo para un hosting de verdad?
Servidores en España · Soporte 24/7 en español · Migración gratuita
Ver Planes desde 3,95€/mes →