Nginx / Passenger / Rails“上游过早关闭连接,同时从上游读取响应头”

时间:2015-01-20 18:09:20

标签: ruby-on-rails nginx passenger

我对我的Rails 4应用程序做了一些小改动,我在ApplicationController上的before_action中设置了response.headers:

class ApplicationController < ActionController::Base
  before_action :set_response_headers

  def set_response_headers
    response.headers['FOO'] = some_object.id if some_object
    response.headers['ABC'] = other_object.id if other_object
  end
end

Nginx错误日志说:

2015/01/20 09:49:34 [error] 3401#0: *504273 upstream prematurely closed connection while reading response header from upstream, client: xx.xx.xx.xx, server: localhost, request: "GET /api/v1/foos HTTP/1.1", upstream: "passenger:/tmp/passenger.1.0.3380/generation-0/request:", host: "foo.com"

当我向/api/v1/foos发出请求时,我看到请求命中Rails并且日志似乎正常进行,但响应开始了。

在这个特定问题上,我在这里或周围没有看到很多已解决的问题,而且我也不确定这不是PEBCAK问题。

1 个答案:

答案 0 :(得分:1)

试试这个

response.headers['FOO'] = some_object.id.to_s if some_object
response.headers['ABC'] = other_object.id.to_s if other_object

Passenger需要标头值为字符串或数组