2010-10-14 22 views
8

Tengo la instalación nginx 0.7.67 en Ubuntu10.10 junto con php-cli. Estoy tratando de ejecutar mi framework PHP basado en controlador frontal, pero todas las páginas excepto index.php dan un error 403.Nginx da un error 403 para archivos CSS/JS

Ex:

  1. http://mysite.com/styles/style.css - 403 Prohibido
  2. http://mysite.com/scripts/script.css - 403 Prohibido
  3. http://mysite.com/index.php - Funciona

Mi /etc/nginx/sites-enabled/default es tan sigue

server { 
    listen   80; 
    server_name  mysite.com; 

    access_log  /var/log/nginx/access.log; 
    error_log  /var/log/nginx/error.log warn; 

    index   index.php index.html; 
    root  /full/path/to/public_html; 

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ { 
      expires max; 
    } 


    location ~ index.php { 
      include  /etc/nginx/fastcgi_params; 
      keepalive_timeout 0; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      fastcgi_pass 127.0.0.1:9000; 
    } 

} 

¿Alguna sugerencia sobre cómo solucionar lo anterior?

PD: Esta es la entrada del registro de errores

2010/10/14 19:56:15 [error] 3284#0: *1 open() "/full/path/to/public_html/styles/style.css" 
failed (13: Permission denied), client: 127.0.0.2, server: quickstart.local, 
request: "GET /styles/style.css HTTP/1.1", host: "mysite" 
+2

Dammit. Fue un problema de permiso de Linux. Uno de los directorios de nivel superior no tenía permiso "r" para otros. El problema está resuelto. – Adil

Respuesta

16

Tenía el mismo problema. Se solucionó simplemente configurando los permisos correctos en mis archivos y carpetas CSS y JS. ¡Ten cuidado con la configuración de permisos! Pero para que un archivo sea legible en la web, tiene que ser legible por el usuario que ejecuta el proceso del servidor.

chmod -R +rx css 
chmod -R +rx js 

Da permisos de lectura y ejecución. El -R es recursivo. ¡Solo haga esto para los archivos que quiera legibles por el mundo!

+0

¡Han pasado 3 años desde que resolví esto! Buena respuesta sin embargo. – Adil

+0

¿No debería ser 'chmod -R + rx css' en su lugar? –

+0

@MichaelButler Gracias. Sin embargo, no es aceptado en Mac OS X. –

0

Pruebe esto en su línea de ubicación:

location ~* ^.+\.(js|css|png|jpg|jpeg|gif|ico|html)$ { 

o

location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|html)$ { 
+0

Aún da el mismo error con las dos opciones – Adil

+0

error log dice 2010/10/14 19:56:15 [error] 3284 # 0: * 1 open() "/ home/adil/NetBeansProjects-old/CrowdSourceWeb/applications /csw/web/styles/style.css "failed (13: Permiso denegado), client: 127.0.0.2, server: quickstart.local, request:" GET /styles/style.css HTTP/1.1 ", host:" quickstart .local " – Adil

-3
server { 
     listen   80; 
     server_name  mysite.com; 

     access_log  /var/log/nginx/access.log; 
     error_log  /var/log/nginx/error.log warn; 

     index   index.php index.html; 
     root  /full/path/to/public_html; 

} <--- you forgot this one 

     location ~* \.(js|css|png|jpg|jpeg|gif|ico|html)$ { 
       expires max; 
     } 


     location ~ index.php { 
       include  /etc/nginx/fastcgi_params; 
       keepalive_timeout 0; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
       fastcgi_pass 127.0.0.1:9000; 
     } 

    } 

hay que cerrar servidor {} antes de definir la ubicación.

o cambie el propietario de los archivos a www-data o apache si no tiene acceso a los archivos.

+1

La etiqueta de ubicación debe estar dentro de la etiqueta del servidor. – Adil

+0

que es extraño, en mi situación funciona con el servidor de cierre {} antes de definir una ubicación. ¡Pero me alegra que hayas encontrado la solución! – Maarten

+0

Maarten. Solo para explicar mi comentario anterior, la razón por la que dije eso es porque nginx se queja. Es "ilegal" mantener la etiqueta de ubicación fuera de la etiqueta del servidor. Tal vez deberías revisar tu conf de nuevo, para ver exactamente por qué lo hace. Bueno saber. Y, gracias por ayudarme. – Adil

-1

Asegúrese de que todos los directorios de nivel superior tengan niveles de permiso Y el index.html. La mayoría de las veces, simplemente copiará el archivo que desea ver en/www y lo cambiará a index.html para asegurarse de que el nuevo index.html tenga los permisos correctos (para asegurarse de que solo sea para 777 probarlo).

+2

777 "solo para estar seguro" es una idea terrible. "Tengo mis llaves, pero debo dejar la puerta de entrada desbloqueada solo para asegurarme de que pueda volver a entrar". – Dan

1
solución

Alt: cambiar el usuario de ejecución mediante la edición del nginx.conf (por ejemplo, /usr/local/nginx/conf/nginx.conf) al propietario de esos archivos:

user myuser mygroup; 
0

necesito escribir una solución alternativa a este problema. Migro wordpress al servidor plesk y obtengo este error con los scripts css y js. La configuración de Nginx produce un error al obtener archivos js y css. Si un error de wordpress al cargar scripts CSS y JS (prohibidos), puede deberse a la configuración de nginx y apache.

desbloquear la caja de nginx configuración y Apache:

procesamiento inteligente de archivos estáticos -> NO CONTROLADA

Esto resuelve mi problema. Espero que otros también pymessoft.com

Cuestiones relacionadas