Si tienes problemas al subir archivos grandes a tu servidor alojado en cPanel y recibes un error 404 inesperado, probablemente la carpeta temporal utilizada por ModSecurity está llena o mal configurada. Este problema ocurre porque ModSecurity, un firewall de aplicaciones web (WAF), maneja las cargas de archivos en una carpeta temporal que puede saturarse rápidamente, especialmente con archivos grandes o múltiples cargas simultáneas.
Cómo diagnosticar el problema
Puedes confirmar si este es tu problema con dos métodos sencillos:
1. Verifica el espacio en la carpeta temporal: Usa el siguiente comando para revisar cuánto espacio queda disponible en la carpeta temporal:
df -h
Si observas que la carpeta /tmp
o la carpeta temporal asignada a ModSecurity está llena o casi llena, probablemente hayas identificado el problema.
2. Revisa los logs de ModSecurity en WHM: Desde WHM, ve a «ModSecurity Tools», filtra por el dominio afectado y verifica si aparecen errores del tipo:
Request body parsing error
Esto indica que ModSecurity está teniendo problemas al manejar la subida de archivos debido a la carpeta temporal.
Cómo solucionar el problema
A continuación te explico cómo solucionar este problema paso a paso, incluyendo detalles sobre qué hace cada comando y por qué es importante configurarlos correctamente.
1. Editar configuración de ModSecurity
Primero, necesitas ajustar la configuración que determina dónde y cómo ModSecurity almacena los archivos temporales.
Abre la configuración con este comando:
nano /etc/apache2/conf.d/modsec/modsec2.user.conf
Luego, añade o modifica estas líneas:
SecRequestBodyLimit 1073741824 SecUploadKeepFiles Off SecTmpDir /modsec_tmp SecUploadDir /modsec_tmp
Explicación de cada línea:
SecRequestBodyLimit 1073741824
: Define el límite máximo del tamaño de archivo que se puede subir, aquí establecido en aproximadamente 1GB (en bytes). Puedes ajustar este valor según tus necesidades.SecUploadKeepFiles Off
: Indica que ModSecurity no retendrá los archivos temporales después de procesarlos.SecTmpDir /modsec_tmp
: Establece el directorio temporal que usará ModSecurity.SecUploadDir /modsec_tmp
: Define el directorio específico para la subida de archivos temporales.
2. Crear la carpeta temporal
La carpeta temporal debe existir y tener permisos adecuados para que ModSecurity pueda escribir en ella:
mkdir /modsec_tmp/ chmod 777 /modsec_tmp/
mkdir
crea la carpeta temporal.chmod 777
da permisos completos a todos los usuarios, asegurando que ModSecurity no tenga restricciones para escribir.
3. Reconstruir configuración y reiniciar Apache
Luego, debes aplicar estos cambios reconstruyendo la configuración de Apache y reiniciando el servicio:
/scripts/rebuildhttpdconf /scripts/restartsrv_httpd --restart
/scripts/rebuildhttpdconf
regenera la configuración de Apache en cPanel./scripts/restartsrv_httpd --restart
reinicia Apache para aplicar los cambios inmediatamente.
4. Crear tarea cron para limpieza automática
Para evitar que la carpeta temporal se vuelva a llenar con el tiempo, es esencial configurar una tarea automática (cron) que borre periódicamente los archivos antiguos.
Crea el script con este comando:
nano /etc/cron.daily/remove_modsec_temp_files.cron
Inserta el siguiente contenido:
#!/bin/bash
# Elimina archivos temporales de ModSecurity que tengan más de 1 día de antigüedad
/bin/find /modsec_tmp/ -name "*-file-*" -mtime +1 -type f -delete
/bin/find
busca archivos específicos (*-file-*
) en la carpeta temporal y elimina automáticamente aquellos que tengan más de un día de antigüedad.
5. Otorga permisos y reinicia cron
Finalmente, da permisos al script para que pueda ejecutarse automáticamente y reinicia el servicio cron para aplicar esta tarea:
chmod +x /etc/cron.daily/remove_modsec_temp_files.cron service crond restart
chmod +x
hace que el archivo sea ejecutable.service crond restart
reinicia el servicio cron para activar inmediatamente la tarea programada.
¡Listo! Ahora deberías poder subir archivos sin experimentar más errores 404 relacionados con problemas en la carpeta temporal. Mantener esta configuración limpia y ajustada evitará futuros problemas similares.