我使用node.js
Nginx 作為在 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
改變確實對我有用
- chown root:root /var/lib/nginx/
- 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 內部伺服器錯誤,我看到了預期的結果。謝謝