Estoy usando la configuración predeterminada mientras agrego el directorio específico con nginx instalado en mi máquina ubuntu 12.04.
server {
#listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to index.html
root /username/test/static;
try_files $uri $uri/ /index.html;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
...
...
}
Solo quiero un servidor nginx estático simple para servir archivos desde ese directorio. Sin embargo, comprobando el error.log
veo
2014/09/10 16:55:16 [crit] 10808#0: *2 stat() "/username/test/static/index.html" failed (13: Permission denied), client:, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "domain"
2014/09/10 16:55:16 [error] 10808#0: *2 rewrite or internal redirection cycle while internally redirecting to "/index.html
Ya he hecho chown -R www-data:www-data
en /username/test/static
, yo los he puesto a chmod 755
. No sé qué más se necesita configurar.
www-data
usuario puede accedercd
al/username/test/static
directorio:sudo -u www-data cd /username/test/static
Respuestas:
Nginx opera dentro del directorio, por lo que si no puede acceder
cd
a ese directorio desde el usuario de nginx, fallará (al igual que elstat
comando en su registro). Asegúrate de que lawww-user
latacd
llegue hasta el/username/test/static
. Puede confirmar questat
fallará o tendrá éxito ejecutandoEn su caso, probablemente el
/username
directorio sea el problema aquí. Porwww-data
lo general , no tiene permisos paracd
los directorios de inicio de otros usuarios.La mejor solución en ese caso sería agregar
www-data
alusername
grupo:y asegúrese de que ese
username
grupo pueda ingresar a todos los directorios a lo largo de la ruta:Para que sus cambios funcionen, reinicie nginx
fuente
umask
. Si necesita una solución más genérica, que no requierachmod
cada directorio nuevo, entonces hay una solución. Requiere asociación de grupo inverso (username
awww-data
agrupar) y el uso desetgid
. No dude en publicar una nueva pregunta para obtener una descripción más detallada y con gusto responderé.nginx
usuario puede acceder al directorio de mi sitio web, pero aún dice permiso denegado en los registros de errores.Acabo de tener el mismo problema en una caja CentOS 7.
Parece que golpeé Selinux. Poner selinux en modo permisivo (
setenforce permissive
) ha solucionado el problema por ahora. Intentaré volver con una solución adecuada.fuente
ls -Z myFile.js
mostrará el contexto de SELinux: se-rw-r--r--. nginx nginx unconfined_u:object_r:user_home_t:s0 myFile.js
usachcon -v --type=httpd_sys_content_t myFile
para cambiar el contenido de SELinux.sudo setenforce 0
lo arregló para mí.SELINUX
valor adisabled
in/etc/selinux/config
, seguido de un reinicio. Cuando está configuradopermissive
, aún puede ejecutar comprobaciones entre bastidores (utilizando una CPU valiosa), pero no realiza ninguna acción.Nginx debe tener acceso + x en todos los directorios que conducen al directorio raíz del sitio.
Asegúrese de tener + x en todos los directorios de la ruta que conduce a la raíz del sitio. Por ejemplo, si la raíz del sitio es / home / username / siteroot:
fuente
En CentOS 7.0 tuve este
Access Deined
problema causado por SELinux y estos pasos resolvieron el problema:Actualización: solo una nota al margen de lo que aprendí mientras usaba los servidores Linux virtuales de digitalocean, o como los llaman Droplets . El uso de SELinux requiere una buena cantidad de RAM. Lo más probable es que no pueda ejecutar y administrar SELinux en una gota con menos de 2 GB de RAM.
fuente
setenforce 0
. Sin embargo, al mirar hacia atrás en lo que realmente hace esta solución, me di cuenta de que necesitaba volver a ejecutar los comandos para actualizar los permisos para el usuario nginx. Eso pareció funcionar y podría hacer que SELinux volviera a hacer cumplir.Es posible que tenga Linux con seguridad mejorada en ejecución, así que agregue una regla para eso. Tenía 13 errores de permiso, a pesar de que se establecieron permisos y el usuario existía.
chcon -Rt httpd_sys_content_t /username/test/static
fuente
Síntoma:
No se pudieron cargar imágenes a la biblioteca multimedia de WordPress.
Porque:
(CentOS)
yum update
Error:
Solución:
chown -R www-data:www-data /var/lib/nginx
fuente
Por defecto, los datos estáticos, cuando instale el nginx, estarán en / var / www / html. Entonces puede copiar su carpeta estática en / var / html / y configurar el
en ngix.conf (o / etc / nginx / sites-available / default)
Esto funcionó para mí en ubuntu, pero supongo que no debería ser muy diferente para otras distribuciones.
Espero eso ayude.
fuente
Cambie su
nginx.conf
user
propiedad awww-static
propietario de archivos.fuente
Enfrenté este problema, lo resolví para otorgar permisos al usuario y grupo de nginx algo como esto:
fuente
En mi caso, la carpeta que servía los archivos era un enlace simbólico a otra carpeta, hecho con
Aunque los permisos (usuario y grupo) eran correctos en la carpeta de destino (el enlace simbólico), todavía tenía el error porque Nginx también necesitaba tener permisos para la jerarquía completa de la carpeta de origen.
fuente
Finalmente encontré mi camino. En resumen, digamos que su nombre de usuario es
joe
y tiene un sitio web en su sistema de archivos personal/home/joe/path/to/website
.Literalmente tienes que decirle al sistema que
nginx
es tu amigo.Colocar
nginx
enjoe
grupo:Después de eso, si aún no funciona, verifique el acceso correcto al
/home/joe
directorio. Esa es probablemente la razón por la que nginx no puede acceder al archivo porque incluso si ahora es tu amigo, tienes que abrirle la puerta de tu casa:Eso es. Eso es, literalmente, todo lo que tiene que hacer para que nginx acceda a sus archivos locales :)
No creo que haya problemas de seguridad con este método porque
nginx
es la máxima autoridad y solo un administrador puede cambiar el grupo.nginx
ahora puede leer lo que hay en losjoe
directorios. Es solo una brecha de seguridad si el titular de langinx
cuenta es diferente con el usuario desde el que abre el acceso al directorio, pero en mi caso soy el titular de ambas partes, es decir, en un contexto local.fuente
Tuve el mismo problema, estoy usando Plesk Onyx 17 con Centos7. Pude ver este error en proxy_error_log en los registros del dominio afectado. Todos los directorios / archivos en / var / www / vhosts / son propiedad de sus respectivos usuarios (propietarios de dominio) y puede ver que todos ellos están en el grupo psacln. Entonces, la solución fue agregar nginx también a este grupo, para que pueda ver lo que necesita:
Y, de hecho, reinicie nginx y vuelva a cargar la página con Ctrl + F5.
fuente
Encontré una solución alternativa: moví la carpeta a la carpeta de configuración de nginx, en mi caso "/ etc / nginx / my-web-app". Y luego cambió los permisos al usuario root "sudo chown -R root: root" my-web-app ".
fuente
También puede agregar qué usuario ejecutará nginx. En el archivo nginx.conf, realice los siguientes cambios:
Puede agregar la línea anterior como la primera línea en su nginx conf. Puede escribir el nombre de cualquier usuario que tenga permiso para escribir en ese directorio.
fuente
Este suele ser el problema de los privilegios ... Para mí, es porque uso / root / ** como raíz de nginx, necesita un mayor privilegio. Una forma sencilla es mover el proyecto a un directorio creado por usted mismo.
fuente