/var/lib/nginx/client_body/0000000011 與 node.js 失敗(13:權限被拒絕)

/var/lib/nginx/client_body/0000000011 與 node.js 失敗(13:權限被拒絕)

我使用node.jsNginx 作為在 Slackware 14.1 上運行的 Web 伺服器。

我創建了一個上傳文件的頁面。在我的開發機器(類似 Debian)中,它工作正常,但在生產環境(Slackware 伺服器)中,我收到以下錯誤/var/log/nginx/error.log

2015/10/09 15:08:44 [crit] 1231#0: *5 open() "/var/lib/nginx/client_body/0000000003" failed (13: Permission denied), client: 10.0.0.22, server: localhost, request: "POST /home/perfil_usuario/upload HTTP/1.1", host: "aluno.fio.edu.br", referrer: "http://aluno.fio.edu.br/home/perfil_usuario/upload"

Nginx 回傳一個500 Internal Server Error.

我搜索並嘗試了許多帖子的修復,但錯誤仍然存在。

答案1

正如錯誤訊息所示,這是一個權限問題。

這通常是由於 nginx 進程使用者(www-data例如)沒有對父目錄之一的讀取/執行存取權限所引起的。

檢查/var/lib/nginx/client_body/並確保各目錄層級的權限正確即可解決問題。

答案2

就我而言,問題是 /var/lib/nginx 的所有權錯誤。 nginx 寫入的所有其他目錄均歸 www-data 所有,而 'nginx 目錄則歸 root 所有。在這種情況下,最好的解決方案是更改目錄所有權以符合 nginx 寫入的其他目錄的所有權。

答案3

在我的例子中, /var/lib/nginx 的所有權設定為 www-data:adm ,權限設定為 770

改變確實對我有用

  1. chown root:root /var/lib/nginx/
  2. chmod 0755 /var/lib/nginx

另外 /var/lib/nginx/tmp 也不同,根據第 1 點和第 2 點更新了所有權和權限

並提到了 /var/lib/nginx/tmp 中的內容

drwx------。 2 www-data root 6 九月 29 23:37 uwsgi

drwx------。 2 www-data root 6 九月 29 23:37 scgi

drwx------。 2 www-data root 6 九月 29 23:37 fastcgi

drwx------。 10 www-data root 78 十月 20 12:17 代理

drwx------。 2 www-data 根 10 月 20 日 6 12:20 client_body

設定完這些權限和所有權後,重新啟動 nginx。你不會看到權限被拒絕錯誤,Nginx 停止給出 500 內部伺服器錯誤,我看到了預期的結果。謝謝

相關內容