node.js
Slackware 14.1 上で実行されている Web サーバーとして Nginx を使用しています。
ファイルをアップロードするページを作成しました。開発マシン (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
エラーメッセージにもあるように、これは権限問題。
www-data
これは通常、nginx プロセス ユーザー (例)が親ディレクトリの 1 つに対する読み取り/実行アクセス権を持っていないために発生します。
/var/lib/nginx/client_body/
問題を解決するには、各ディレクトリ レベルで権限が正しいことを確認してください。
答え2
私の場合、問題は /var/lib/nginx の所有権が間違っていたことです。nginx が書き込む他のすべてのディレクトリは www-data が所有していましたが、'nginx dir は root が所有していました。この場合、最善の解決策は、ディレクトリの所有権を、nginx が書き込む他のディレクトリの所有権と一致するように変更することです。
答え3
私の場合、/var/lib/nginxの所有権はwww-data:admに設定され、権限は770に設定されていました。
変更は私に効果がありました
- chown ルート:root /var/lib/nginx/
- chmod 0755 /var/lib/nginx
また、/var/lib/nginx/tmpも異なっていました。ポイント1とポイント2に従って所有権と権限を更新しました。
/var/lib/nginx/tmp内のコンテンツについて言及した
drwx------. 2 www-data ルート 6 9月 29 23:37 uwsgi
drwx------. 2 www-data ルート 6 9月 29 23:37 scgi
drwx------. 2 www-data ルート 6 9月 29 23:37 fastcgi
drwx------. 10 www-data ルート 78 10月 20 12:17 プロキシ
drwx------. 2 www-data ルート 6 Oct 20 12:20 client_body
これらの権限と所有権を設定したら、nginx を再起動します。すると、権限拒否エラーが表示されなくなり、nginx は 500 内部サーバー エラーを返さなくなり、期待どおりの結果が表示されます。ありがとうございます。