2017年3月3日金曜日

nginx + WEBDAV 経由で画像のアップロードできない

nginx で WEBDAVを構築する方法は世の中に沢山出ているので割愛します。
しかし、画像等一部拡張子ファイルがアップロードできない問題は、検索しても出てこなかったので備忘録を込めてメモっておきます。

WebDAV は、 SSL+BASIC認証でアクセスしている環境下でのテストです。

Not Allow エラー


ファイルパーミッションが問題ないのに、 WordPress のテーマフォルダに PHPファイルはアップロードできるのに画像をアップロードできない〜っていう場合には、location で拡張子を設定してあげてください。nginx では location で明示的に指定されていない拡張子はアクセスできない仕様です。

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

など、アップロード許可を与える拡張子を設定するわけですね。
{} 内は記述なしでOKです。ログを残したくなければ、
  • access_log off; log_not_found off
あたりを {} 内に入れておけばよいでしょう。

Bad Request 400 エラー


webdav に対するパスワード制限に加えて、サイトまるごとパスワード制限していないか確認してみてください。

  • Not Allowエラー状態(上部の拡張子を許可していないケース)
  • サイト丸ごとパスワード制限が共有パスワード(よくある公開前の内部閲覧等)
  • webdav はユーザーごとのパスワード
の3条件すべてに合致した場合、nginx では上部のパスワードロックにひっかかって クライアント側で bad request 400 が出るようです。サーバー側ではサイト丸ごとのパスワード制限に引っかかったよとエラーログに出る。

ただこの問題は、Not Allowエラーで説明した拡張子を許可することで解消します。

2017年3月3日 @kimipooh



0 件のコメント: