tienes - Nginx sirve archivo estático y tiene 403 prohibido
error 403 youtube (4)
Solo quiero ayudar a alguien. sí, solo quieres servir un archivo estático usando nginx, y tienes todo bien en nginx.conf :
location /static {
autoindex on;
#root /root/downloads/boxes/;
alias /root/downloads/boxes/;
}
Pero, al final, fallaste. Tienes "403 prohibido" del navegador ...
---------------------------------------- La respuesta a continuación: ------ ----------------------------------
La solución es muy simple:
Forma 1: ejecute nginx como el usuario como el propietario ''/ root / downloads / boxes /''
En nginx.conf :
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
SÍ, en la primera línea " #user noboy; ", simplemente elimine " # " y cambie " nobody " a su nombre de usuario en Linux / OS X, es decir, cambie a " root " para la prueba. El reinicio nginx.
Atención , ¡mejor no ejecutes nginx como root ! Aquí solo para probar, es peligroso para el Hacker.
Para obtener más información, consulte nginx (motor X) - ¡Qué dolor en el BUM! [13: Permiso denegado]
Modo 2: cambiar el propietario ''/ root / downloads / boxes /'' a ''www-data'' o ''nobody''
En la Terminal :
ps aux | grep nginx
Obtenga el nombre de usuario de ejecutar nginx. Debe ser ''www-data'' o ''nobody'' determinado por la versión de nginx. Luego presione en Terminal (use ''www-data'' por ejemplo):
chown -R www-data:www-data /root/downloads/boxes/
------------------------------ Una cosa más importante es: -------------- ----------------
Estos directorios principales "/" , "/ root" , "/ root / downloads" deberían otorgar el permiso execute (x) a ''www-data'' o ''nobody'' . es decir
ls -al /root
chmod o+x /root
chmod o+x /root/downloads
Para obtener más información, consulte Resolver el error "403 Prohibido" y Nginx 403 prohibido para todos los archivos
Como Nginx maneja los archivos estáticos directamente, necesita acceder a los directorios apropiados. Necesitamos otorgarle permisos ejecutables para nuestro directorio de inicio.
La forma más segura de hacerlo es agregar el usuario de Nginx a nuestro propio grupo de usuarios. A continuación, podemos agregar el permiso ejecutable a los propietarios del grupo de nuestro directorio principal, lo que brinda el acceso suficiente para que Nginx sirva los archivos:
sudo usermod -a -G your_user nginx
chmod 710 / home / your_user
Debes otorgar permisos nginx para leer el archivo. Eso significa que debe darle al usuario que ejecuta los permisos del proceso nginx para leer el archivo.
Este usuario que ejecuta el proceso nginx es configurable con la directiva de user
en la configuración de nginx, generalmente ubicada en algún lugar en la parte superior de nginx.conf
:
user www-data
http://wiki.nginx.org/CoreModule#user
El segundo argumento que le da al user
es el grupo, pero si no lo especifica, usa el mismo que el usuario, por lo tanto, en mi ejemplo, el usuario y el grupo son www-data
.
Ahora los archivos que desea servir con nginx deben tener los permisos correctos. Nginx debe tener permisos para leer los archivos. Puede otorgar al grupo permisos de lectura de www-data
en un archivo como este:
chown :www-data my-file.html
http://linux.die.net/man/1/chown
con chown
puede cambiar el usuario y el propietario del grupo de un archivo. En este comando solo cambio el grupo, si también cambiaras el usuario, especificarías el nombre de usuario ANTES de los dos puntos, como chown www-data:www-data my-file.html
. Pero establecer los permisos de grupo correctos debería ser suficiente para que nginx pueda leer el archivo.
Después de buscar respuestas muy útiles, decidimos recopilar todo lo relacionado con los permisos como una receta. Específicamente, la solución más simple con la máxima seguridad (= permisos mínimos).
- Supongamos que implementamos el sitio como
admin
usuario, es decir, ella posee el directorio del sitio y todo lo que contiene. No queremos ejecutar nginx como este usuario (demasiados permisos). Está bien para probar, no para prod. - De forma predeterminada, Nginx ejecuta los trabajadores como un usuario
nginx
, es decir, la configuración contiene eluser nginx
líneauser nginx
- Por defecto, el usuario
nginx
está en el grupo con el mismo nombre:nginx
. - Queremos otorgar permisos mínimos al usuario
nginx
sin cambiar la propiedad del archivo. Esta parece ser la opción ingenua más segura. Para poder servir archivos estáticos, los permisos mínimos requeridos en la jerarquía de carpetas (vea los permisos del grupo) deberían ser así (use el comando
namei -l /home/admin/WebProject/site/static/hmenu.css
):raíz de raíz dr-xr-xr-x /
drwxr-xr-x root root home
drwxr-x --- admin nginx admin
drwx - x --- admin nginx WebProject
drwx - x --- sitio admin nginx
drwx - x --- admin nginx estático
-rwxr ----- admin nginx hmenu.cssA continuación, ¿cómo obtener esta hermosa imagen? Para cambiar la propiedad del grupo para los directorios, primero aplicamos
sudo chown :nginx /home/admin/WebProject/site/static
y luego repetimos el comando stripping dirs del derecho uno a uno.Para cambiar los permisos de los directorios, aplicamos
sudo chmod g+x /home/admin/WebProject/site/static
ysudo chmod g+x /home/admin/WebProject/site/static
.Grupo de cambios para los archivos en el directorio / static:
sudo chown -R :nginx /home/admin/WebProject/site/static
Por último, cambie los permisos para los archivos en el directorio / static:
sudo chmod g+r /home/admin/WebProject/site/static/*
(Por supuesto, uno puede crear un grupo dedicado y cambiar el nombre de usuario, pero esto oscurecería la narración con detalles sin importancia).
por respuesta aceptada
sudo chown -R :www-data static_folder
para cambiar el propietario del grupo de todos los archivos en esa carpeta