nginx + unicorn + rails 画像転送時にPermission denied

◼︎解決方法

  • /var/lib/nginx/tmpの所有者変更をする。
  • client_body_temp_pathというオプションをnginx.confに追記する。

◼︎起こった問題

nginx + unicorn + rails の環境構成。S3への画像転送がうまくいかない。nginxのerror.logに以下のログが吐かれている。どうやらパーミッションエラーのようだ。

 

2015/11/01 12:00:00 [crit] 9397#0: *1 open() "/var/lib/nginx/tmp/client_body/0000000001" failed (13: Permission denied), client: 153.***.**.***, server: api.com, request: "PUT /v1/users/23/profile HTTP/1.1", host: "api.com"

 

/var/lib/nginx/tmpの所有者変更をする。

chown nginx /var/lib/nginx/tmp

これで解決。

しかし、以下のケースもありえる。

/var/lib/nginx/tmpの所有者は、nginx.confのuseオプションで指定した所有者にnginx起動時に毎回書き換えを行なってるくさい。useオプションを書き換えてる場合は注意。

useを変更できない場合は、client_body_temp_pathというオプションをnginx.confに指定すればいいかも。

client_body_temp_path /var/tmp/nginx;