nginxのリバースプロキシで巨大なファイルのダウンロードに失敗する件

例えば友人がスポーツの試合の動画を共有してくれた時、長時間にわたるものだと4GB~5GBぐらいまでデカかったりして、サーバーからダウンロードに失敗すると試行錯誤の時間がなかなか手痛い。今回はnginxでリバースプロキシを構成したサーバーから4GBぐらいのファイルをダウンロードしようとしたらできなくて困ったのだけれど、wgetを使うとできたのでメモ書き。

症状

4GBぐらいある動画ファイルをダウンロードしようとしたら、1GBキッカリまでしかダウンロードできない

状況

  • nginxでリバースプロキシが構成されている
  • ダウンロードしようとしたデータは4GBぐらいある
  • 何回ダウンロードしても、ブラウザを変えても1.08GBキッカリで切れる

解決

wget -c http://example.com/test.mp4

wgetに-cか–continueをつけてダウンロードすればなぜかいけた。
一度1.08GBでダウンロードがずっと停止したままになるが、[ctrl]+[c]で処理を中断して、もう一度wget -cすれば最後までダウンロードできる。

追記:サーバー側の対応

この問題は、nginxのHttpProxyModuleのproxy_max_temp_file_size を変えることで直せるようだ。(thx! >@ysks)
“/etc/nginx/nginx.conf”の中身の一部を以下のように書き換えればいいらしい(thx! >@shao1555)

server {
    proxy_temp_path /tera/nginx_temp; 
    proxy_max_temp_file_size 8192m; 
    proxy_buffers 8 64k; 
    proxy_buffer_size 64k;
}

サーバーの管理者に当該箇所を修正してもらってから同じファイルをダウンロードしてみたら、無事に一発でダウンロードできた。


コメントを残す