2012-01-29 14 views
1

なんらかの理由でclient_max_body_size 16M;をnginx.confファイルに入れても効果がありません - Webサーバーに画像をアップロードしようとすると、まだHTTP 413エラーが表示されます。私は設定ファイルを変更するたびにNginxを再起動しました。場所{}ブロック、サーバ{}ブロック、http {}ブロックにclient_max_body_sizeディレクティブを配置しようとしました。私は同時に3つのすべてを試してみました。Nginxがclient_max_body_sizeを無視しています

これに対する答えを見てみると、誰かが私が持っていないproxy.confのような他の設定ファイルでclient_max_body_size行を探してみることを勧めました。単に8080

は私が実行して、4.5メガバイトのJPGファイルをアップロードしようとしているnginxのは上の1.0.5虹の束(ユニコーン)ポート上で実行されているとの接続をupstreaming -

私のnginxの設定ファイルは特別なものではありませんUbuntu 11.10。なぜこれがうまくいかないのか?

UPDATE:(?)

一つだ虹の労働者のは、30秒ごとに再起動されます。 rainbows.stderr.logからの出力は次のとおりです。

E, [2012-01-29T17:27:05.977487 #25218] ERROR -- : adding listener failed addr=0.0.0.0:8080 (in use) 
E, [2012-01-29T17:27:05.978011 #25218] ERROR -- : retrying in 0.5 seconds (4 tries left) 
E, [2012-01-29T17:27:06.478767 #25218] ERROR -- : adding listener failed addr=0.0.0.0:8080 (in use) 
E, [2012-01-29T17:27:06.478964 #25218] ERROR -- : retrying in 0.5 seconds (3 tries left) 
E, [2012-01-29T17:27:06.979509 #25218] ERROR -- : adding listener failed addr=0.0.0.0:8080 (in use) 
E, [2012-01-29T17:27:06.979650 #25218] ERROR -- : retrying in 0.5 seconds (2 tries left) 
E, [2012-01-29T17:27:07.480190 #25218] ERROR -- : adding listener failed addr=0.0.0.0:8080 (in use) 
E, [2012-01-29T17:27:07.480353 #25218] ERROR -- : retrying in 0.5 seconds (1 tries left) 
E, [2012-01-29T17:27:07.980809 #25218] ERROR -- : adding listener failed addr=0.0.0.0:8080 (in use) 
E, [2012-01-29T17:27:07.980987 #25218] ERROR -- : retrying in 0.5 seconds (0 tries left) 
E, [2012-01-29T17:27:08.481638 #25218] ERROR -- : adding listener failed addr=0.0.0.0:8080 (in use) 
/usr/local/forrager/shared/bundle/ruby/1.9.1/gems/unicorn-4.1.1/lib/unicorn/socket_helper.rb:144:in `initialize': Address already in use - bind(2) (Errno::EADDRINUSE) 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/gems/unicorn-4.1.1/lib/unicorn/socket_helper.rb:144:in `new' 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/gems/unicorn-4.1.1/lib/unicorn/socket_helper.rb:144:in `bind_listen' 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/gems/unicorn-4.1.1/lib/unicorn/http_server.rb:222:in `listen' 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/gems/unicorn-4.1.1/lib/unicorn/http_server.rb:733:in `block in inherit_listeners!' 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/gems/unicorn-4.1.1/lib/unicorn/http_server.rb:733:in `each' 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/gems/unicorn-4.1.1/lib/unicorn/http_server.rb:733:in `inherit_listeners!' 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/gems/unicorn-4.1.1/lib/unicorn/http_server.rb:121:in `start' 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/gems/rainbows-4.3.1/bin/rainbows:122:in `<top (required)>' 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/bin/rainbows:19:in `load' 
from /usr/local/forrager/shared/bundle/ruby/1.9.1/bin/rainbows:19:in `<main>' 

答えて

0

あなたが言ったビットは特別なものではなく、実際には何もありませんでした。 Unicornプロセスが/ tmp内のファイルに書き込むことができることを確認します。特定のサイズを超えるものは、メモリに保持されるのではなくディスクに書き出されます。そのため、一時ファイルを作成できることを確認してください。詳細については、Unicornのtmpio.rbを参照してください。

また、http {}の下にclient_max_body_sizeがあることを確認してください。

+0

ご回答いただきありがとうございます。/tmpのパーミッションは世界的に書き込み可能な777であり、http {}の下に 'client_max_body_size'しか持たないようにNginxの設定を変更しました。残念ながら、まだ動作していません。アップロード中に/ tmpの 'ls 'を見てもそこに新しいものは何も表示されません。 Unicornが/ tmpにアクセスできるようにするにはどうすればいいですか? – Cameron

+1

あなたはunicorn byitselfに投稿することができます。方程式のnginxを少し取る。 UnicornはHTTPとして自身を提示し、直接アクセスします。 – Lee

+0

うーん!良い提案。私は他の非常に奇妙な問題を見ている。 Chromeデベロッパーツール(Unicornsに直接接続されている)でリクエスト/レスポンスを表示すると、リクエストはすぐに失敗しますが、実際にエラーコードが表示されるわけではありません。ただし、/ add_image要求は失敗したように赤色に変わります。ヘッダー情報のみで表示される空白のエントリと、base-64でエンコードされたPNGファイルのように見えるその他のものがあります(私はjpgをアップロードしています)。非常に奇妙な。他にUnicornの設定がありますか? Sendfileかそれとも何か? – Cameron

2

私はついに同僚の助けを借りてこの問題を解決しました。私が不適切にRainbows(Unicorn)を構成していたので、問題が発生していたことが分かります。 Nginxの設定で最大のボディサイズを指定することに加えて、私はRainbowsの設定でそれを指定しておくべきです。私はclient_max_body_sizeに電話をかけようとしましたが、これは動作しませんでした。それが判明したので、client_max_body_sizeコールはRainbows!そうブロックする:

Rainbows! do 
    client_max_body_size(16 * 1024 * 1024) # 16 megs 
end 

問題を解決しました。私は今問題なく4と5メガバイトのファイルをアップロードすることができます。みんな、ありがとう!

関連する問題