2010-10-14 20 views
8

Mam setup nginx 0.7.67 na Ubuntu10.10 wraz z php-cli. Próbuję uruchomić mój framework PHP oparty na kontrolerze czołowym, ale wszystkie strony oprócz index.php dają błąd 403.Nginx podaje błąd 403 dla plików CSS/JS

Ex:

  1. http://mysite.com/styles/style.css - 403 Forbidden
  2. http://mysite.com/scripts/script.css - 403 Forbidden
  3. http://mysite.com/index.php - Współpracuje

My /etc/nginx/strony-enabled/default jest jako podąża za

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; 
    } 

} 

Wszelkie sugestie dotyczące rozwiązania powyższych problemów?

PS: To jest wpis z dziennika błędów

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

Cholera. To był problem z Linuksem. Jeden z katalogów najwyższego poziomu nie miał uprawnień "r" dla innych. Problem został rozwiązany. – Adil

Odpowiedz

16

Miał ten sam problem. Naprawiono to po prostu ustawiając odpowiednie uprawnienia dla moich plików CSS i JS oraz folderów. Uważaj na ustawianie uprawnień! Jednak aby plik był czytelny w Internecie, musi być czytelny dla użytkownika uruchamiającego proces serwera.

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

Daje uprawnienia do odczytu i wykonywania. Model -R służy do rekurencji. Zrób to tylko dla plików, które chcesz odczytać przez cały świat!

+0

Minęły 3 lata, odkąd to rozwiązałem! Dobra odpowiedź. – Adil

+0

Czy nie powinien to być "chmod -R + rx css" zamiast? –

+0

@MichaelButler Dzięki. Nie jest ona jednak akceptowana w Mac OS X. –

0

Spróbuj tego w linii lokalizacji:

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

lub

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

Nadal daje ten sam błąd w obu opcjach – Adil

+0

Dziennik błędów mówi 2010/10/14 19:56:15 [błąd] 3284 # 0: * 1 open() "/ home/adil/NetBeansProjects-old/CrowdSourcedWeb/applications /csw/web/styles/style.css "failed (13: Permission denied), 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; 
     } 

    } 

trzeba zamknąć serwer {} przed zdefiniowaniem lokalizacji.

lub zmienić właściciela plików na www-dane lub apache, jeśli nie masz dostępu do plików.

+1

Tag lokalizacji musi znajdować się wewnątrz znacznika serwera. – Adil

+0

To dziwne, w mojej sytuacji działa z serwerem zamykającym {} przed zdefiniowaniem lokalizacji. Ale cieszę się, że znalazłeś rozwiązanie! – Maarten

+0

Maarten. Aby wyjaśnić mój komentarz powyżej, powód powiedziałem, że to dlatego, że nginx narzeka. Jego "nielegalne" zachowanie znacznika lokalizacji poza tagiem serwera. Może powinieneś ponownie zajrzeć do swojego conf, aby zobaczyć dokładnie, dlaczego to robi. Dobrze wiedzieć. I dzięki za pomoc. – Adil

-1

Upewnij się, że każdy katalog najwyższego poziomu ma poziomy uprawnień ORAZ index.html. W większości przypadków po prostu skopiujesz plik, który chcesz zobaczyć w/www, i zmienisz jego nazwę index.html upewnij się, że nowy plik index.html ma odpowiednie uprawnienia (na pewno 777 tylko do testowania).

+2

777 "tylko dla pewności" to okropny pomysł. "Mam klucze, ale powinienem zostawić otwarte drzwi, żeby się upewnić, że będę mógł wrócić." – Dan

1
rozwiązanie

Alt: zmienić użytkownika prowadzony przez edycję nginx.conf (np /usr/local/nginx/conf/nginx.conf) do właściciela tych plików:

user myuser mygroup; 
0

muszę pisz alternatywne rozwiązanie tego problemu. Migrowałem wordpress na serwer plesk i dostaję ten błąd za pomocą skryptów css i js. Konfiguracja Nginxa produkuje błąd pobierania plików js i css. Jeśli błąd wordpress ładuje skrypty CSS i JS (zabronione), może to być spowodowane konfiguracją nginx i apache.

odblokować pole konfiguracji nginx i apache:

Inteligentne przetwarzanie plików statycznych -> NIE SPRAWDZONE

To rozwiązuje mój problem. Mam nadzieję, że inni też. pymessoft.com

Powiązane problemy