nginxのアップロードモジュールを使ってみた
大容量のファイルを扱うことがあったので、どうしようかなと調べているとnginxに便利なモジュールがあったので紹介します!!
入れてみて感じたメリット
細かいことはあまりわかっていませんが、1Gのメモリしか積んでいないマシンに1.5Gほどのファイルをアップロード出来たのでめっちゃ感動しました!!
インストール
mkdir /usr/local/src/nginx mkdir /usr/local/src/nginx-upload-module/ git clone https://github.com/nginx/nginx.git usr/local/src/nginx git clone -b 2.2 /usr/local/src/nginx-upload-module /usr/local/src/nginx-upload-module/ cd /usr/local/src/nginx configure auto/configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf make -j4 make install
大体こんな感じで導入できます(細かい設定は各々やってください(nginxのコマンドを作ったり等))
設定ファイル
location {{ item.path }} { upload_pass @rails; proxy_connect_timeout 500; proxy_send_timeout 500; proxy_read_timeout 500; client_max_body_size 2G; upload_pass_form_field ".*"; upload_store /tmp/; upload_store_access user:rw group:rw all:rw; upload_resumable on; upload_set_form_field "$upload_field_name[filename]" "$upload_file_name"; upload_set_form_field "$upload_field_name[type]" "$upload_content_type"; upload_set_form_field "$upload_field_name[path]" "$upload_tmp_path"; upload_aggregate_form_field "$upload_field_name[md5]" "$upload_file_md5"; upload_aggregate_form_field "$upload_field_name[size]" "$upload_file_size"; upload_max_file_size 2G; }
導入時詰まったところ
アップロードモジュールのmasterは新しいnginxには対応してないみたいです。(全てのバージョンで確認はしていないので実際わかってないです。) 自分が入れたnginx/1.9.13では動かなかったです。しかしプルリクの2.2(アップロードモジュール)は動くみたいだったのでそれを使用すると上手く入れれました。
最後に
アップロードモジュールも結構古いので、将来的には動かなくなる可能性も高いので導入は自己責任でお願い致します。 個人的にはLuaとか使ってアップロードモジュールみたいなのを作るのが安定なのかなと思っています。(好みですが)
- 作者: 久保達彦,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る