Problema: Error de permiso denegado en Nginx
El error "Stat() Failed (13: Permission Denied)" en Nginx ocurre cuando el servidor web no tiene los permisos adecuados para acceder a archivos o directorios. Este problema puede impedir que Nginx sirva contenido o ejecute scripts, lo que puede causar tiempo de inactividad del sitio web o problemas con el funcionamiento del sitio.
Solución del error de permiso denegado
Ajustar la propiedad de archivos y directorios
Para solucionar el error de permiso denegado, ajusta la propiedad de los archivos y directorios. Usa el comando chown para cambiar el propietario de los archivos y directorios al usuario de Nginx, generalmente www-data. Por ejemplo:
sudo chown www-data:www-data /username/test/static
Para aplicar los cambios de propiedad a todos los archivos y subdirectorios, agrega la opción -R:
sudo chown -R www-data:www-data /username/test/static
Consejo: Verificar cambios de propiedad
Después de cambiar la propiedad, usa el comando 'ls -l' para comprobar si los cambios se aplicaron correctamente:
ls -l /username/test/static
Esto mostrará los permisos de archivos y directorios, el propietario y la información del grupo.
Modificar los permisos de directorio
Modifica los permisos del directorio usando el comando chmod. Establece los valores correctos para permitir que Nginx acceda a los archivos. Una configuración común de permisos es 755, que otorga permisos de lectura, escritura y ejecución al propietario, y permisos de lectura y ejecución a otros:
sudo chmod 755 /username/test/static
Establece el acceso adecuado a lo largo de toda la ruta del directorio. Cada directorio padre debe tener al menos permiso de ejecución para el usuario de Nginx:
sudo chmod 755 /username
sudo chmod 755 /username/test
Agregar el usuario de Nginx al grupo requerido
Si cambiar la propiedad y los permisos no funciona, agrega el usuario de Nginx al grupo necesario. Usa el comando gpasswd para agregar el usuario www-data al grupo que posee el directorio:
sudo gpasswd -a www-data username
Después de agregar el usuario de Nginx al grupo, actualiza los permisos del grupo para el acceso al directorio:
sudo chmod g+x /username
sudo chmod g+x /username/test
sudo chmod g+x /username/test/static
Esto otorga al grupo permiso de ejecución en cada directorio de la ruta, permitiendo que Nginx acceda a los archivos.
Prueba y verificación de la solución
Ejecutar Nginx como el usuario apropiado
Para probar si Nginx puede acceder a los archivos con los nuevos permisos, ejecuta un comando como el usuario de Nginx. Usa sudo para cambiar al usuario www-data e intenta acceder a los archivos:
sudo -u www-data stat /username/test/static/index.html
Si este comando se ejecuta sin errores, Nginx ahora puede acceder a los archivos. Si ves un error de "Permiso denegado", revisa los pasos anteriores y asegúrate de que todos los permisos estén configurados correctamente.
Consejo: Verificar la propiedad del archivo
Para verificar rápidamente si la propiedad del archivo está configurada correctamente, usa el comando ls -l:
ls -l /username/test/static/index.html
Esto mostrará el propietario y el grupo del archivo. Asegúrate de que coincidan con el usuario de Nginx (generalmente www-data).
Recargar la configuración de Nginx
Después de cambiar los permisos o la propiedad, recarga la configuración de Nginx para aplicar los cambios:
sudo systemctl reload nginx
Este comando reinicia el servicio Nginx sin interrumpir las conexiones activas.
Para verificar si el error se ha resuelto, revisa los registros de error de Nginx:
sudo tail -f /var/log/nginx/error.log
Si no ves los errores de "Permiso denegado" en el registro, el problema está resuelto. Tu servidor Nginx ahora debería servir los archivos estáticos desde el directorio especificado.





