response.headers['Content-Length']
Rails 3.2.2 アプリケーションで設定すると、Nginx が「502 Bad Gateway」エラーをスローするという問題に遭遇しました。
send_data
メソッドを使用して、変数内に含まれる生の JPEG データを送信するアクションがコントローラーにあります。以前、一部のブラウザで送信された画像全体がダウンロードされず、Content-Length ヘッダーが送信されていないことが判明したため.bytesize
、JPEG データを含む変数のプロパティを Content-Length として使用することにしました。
これは開発では (Unicorn を使用して) 正常に機能し、以前にはなかった Content-Length ヘッダーが存在するようになりましたが、Nginx と Passenger を使用している運用環境では、前述の 502 Bad Gateway が発生します。また、Nginx エラー ログには、次のように表示されます。
[error] 30574#0: *1686 upstream prematurely closed connection while reading response header from upstream
Rails のプロダクション ログに一致するエントリはありません。これは、アプリケーションが正常であることを示しています。
Content-Length ヘッダーを設定した行をコメントアウトしたところ、問題はなくなりました。実際に Content-Length ヘッダーを送信する必要があるかどうかはまだテスト中ですが、それまでの間、好奇心からこれを投稿して、何か考えがあるかどうかを確認したいと思いました。