サーバーに大きな画像をアップロードする際に、この奇妙な問題に苦労しています。私はクライアントでblueimpファイル画像のアップロードを使用しており、サーバーはRails 4で、画像を処理するためにcarrierwaveを使用しています(とにかくうまくいかないようです)。
画像が 1.2 MB 以下であれば問題ありません。しかし、画像がこれよりも大きくなるとすぐに、通常の応答ではなく、サーバーから次の応答が返されます。
HTTP/1.1 500 Internal Server Error
Content-Type: text/html; charset=utf8
X-Pow-Template: error_starting_application
Connection: keep-alive
Transfer-Encoding: chunked
development.log によると、サーバーは、routes.rb で定義されているように、単純な「Completed 201 Created in 1402ms」を実行しています (ただし、アクションは実行されません)。サーバーに送信されるヘッダーは次のとおりです。
POST /images HTTP/1.1
Host: mysite.dev
Connection: keep-alive
Content-Length: 1081439
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://mysite.dev
X-CSRF-Token: ynCLWDzF90l3BhmMcmxF+KCFiws3tnQiFAuWp+Buqcw=
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36
X-Requested-With: XMLHttpRequest
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryT5ZwwFlboJY4Cz7n
Referer: http://mysite.dev/images/new
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ru;q=0.6
私のクライアント設定は、Blueimp のデモで指定されたものとあまり変わらないので、何が間違っているのかよくわかりません。
url: "/images"
paramName: "image[image]"
type: "POST"
dataType: "json"
formData: ""
disableImageResize: false
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
コントローラー アクションのコードは次のとおりです。
def create
@image = Image.create image_params
respond_with @image, layout: false
end
小さなファイルの場合、すべてがスムーズに進みます。
HTTP/1.1 201 Created
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: chrome=1
Location: http://mysite.dev/images/298
Content-Type: application/json; charset=utf-8
ETag: "410e24f50d02125716bfc46eb7850c1f"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 40e527d0-e16a-4a4e-a2e5-6124d8e639ff
X-Runtime: 1.533655
Connection: close
クライアントから送信されるヘッダーは同じなので、ここでは違いはありません。サーバー構成に問題がある可能性があります (大きなファイルを受け入れない) が、見つかりません。
ご協力ありがとうございました!
UPD: 理由が見つかりました。実際にすべての問題を引き起こしたのは pow でした。すべてがネイティブサーバーの実行で完全に機能します。