2010-10-14 77 views
8

我已經在Ubuntu10.10上安裝了nginx 0.7.67以及php-cli。我試圖讓我的基於前端控制器的PHP框架運行,但除index.php之外的所有頁面都會出現403錯誤。Nginx的CSS/JS文件給出403錯誤

例:

  1. http://mysite.com/styles/style.css - 403禁止
  2. http://mysite.com/scripts/script.css - 403禁止
  3. http://mysite.com/index.php - 工程

的/ etc/nginx的/ /默認是啓用的站點 - 如下

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

} 

有關如何解決上述問題的任何建議?

PS:這是從錯誤日誌條目

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

該死的。這是Linux權限問題。其中一個頂級目錄對其他人沒有「r」權限。問題已解決。 – Adil 2010-10-17 11:03:43

回答

16

有同樣的問題。通過簡單地在我的CSS和JS文件和文件夾上設置正確的權限來修復它。請注意設置權限!但是,要使文件在Web上可讀,必須由運行服務器進程的用戶讀取。

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

授予讀取和執行權限。 -R是遞歸的。只對你想要的世界可讀的文件做這件事!

+0

我解決這個問題已經3年了!雖然答案很好。 – Adil 2013-12-13 09:58:43

+0

不應該是'chmod -R + rx css'來代替嗎? – 2014-07-24 11:33:51

+0

@MichaelButler謝謝。儘管這在Mac OS X中不被接受。 – 2014-07-27 08:14:36

0

在您所在地線試試這個:

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

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

它仍然給出了同樣的錯誤,兩個選項 – Adil 2010-10-14 15:56:32

+0

錯誤日誌說2010/10/14 19:56:15 [error] 3284#0:* 1 open()「/ home/adil/NetBeansProjects-old/CrowdSourcedWeb/applications /csw/web/styles/style.css「失敗(13:權限被拒絕),客戶端:127.0.0.2,服務器:quickstart.local,請求:」GET /styles/style.css HTTP/1.1「,主機:」quickstart .local「 – Adil 2010-10-14 15:57:53

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

    } 

你必須關閉服務器{}在定義位置之前。

或者如果您無權訪問這些文件,請將文件的所有者更改爲www-data或apache。

+1

位置標記必須位於服務器標記內。 – Adil 2010-10-16 17:18:24

+0

這很奇怪,在我的情況下,它可以在定義位置之前關閉服務器{}。但是我很高興你找到了解決方案! – Maarten 2010-10-18 19:26:00

+0

Maarten。只是爲了解釋我上面的評論,我之所以這麼說是因爲nginx抱怨。它的「非法」將位置標籤保留在服務器標籤之外。也許你應該再次看看你的conf,看看它爲什麼這樣做。很高興知道。並且,感謝您的幫助。 – Adil 2010-10-20 11:58:28

-1

確保每個頂級目錄都有權限級別和index.html。大多數情況下,您只需複製要在/ www中查看的文件並將其重命名爲index.html,確保新的index.html具有正確的權限(確保777僅用於測試課程)。

+2

777「可以肯定」是一個可怕的想法。 「我有我的鑰匙,但我應該離開我的前門解鎖,以確保我可以重新進入。」 – Dan 2012-09-27 04:28:13

1

Alt鍵溶液:

user myuser mygroup; 
0

我需要:通過編輯nginx.conf(例如,/usr/local/nginx/conf/nginx.conf)對這些文件的所有者改變運行用戶寫出這個問題的替代解決方案。 我將wordpress遷移到plesk服務器,並使用css和js腳本得到此錯誤。 Nginx配置產生一個獲取js和css文件的錯誤。 如果加載CSS和JS腳本的wordpress錯誤(禁止), 它可能是由於nginx和apache的配置。

UNLOCK配置nginx的和Apache的盒子:靜態文件

智能處理 - > DONT CHECKED

這解決了我的問題。我也希望別人 pymessoft.com