Rails服务器返回HTTP状态0

Bra*_*rad 5 ruby ruby-on-rails puma

我知道有时客户端会在请求无法连接,超时等时返回0状态代码显示HTTP请求,但我从未见过服务器将0记录为发送回客户端的内容.

我正在运行Rails 4.2,ruby 2.2.x API.前几天我正在分析我们的日志,并注意到我们的Rails API正在响应HTTP状态代码为0的非平凡数量的请求.我一直无法弄清楚原因.

在某些情况下,似乎请求永远不会进入rails应用程序.我只看到我认为由机架记录的日志消息,其中包含返回的请求路径和状态.在其他情况下,我可以看到我们从应用程序控制器记录的早期日志消息之一.

有没有人见过这样的行为?如果不开始修改rails提供的标准机架中间件,我不确定如何进一步调试.我自己无法重现这种情况; 我只在日志中偶尔看到这个.

关于我们的堆栈的更多信息:

  • Rails 4.2.5
  • Ruby 2.2.3
  • Puma 3.4.0
  • 我们使用nginx进行反向代理,但我认为不会影响它,因为至少是机架收到了请求.

我意识到可能无法回答这里到底发生了什么,所以我希望能找到关于如何最好地解决这个问题的建议.

Bra*_*rad 6

发现这是我们的 Rails 日志记录设置的问题。通过将这些日志与我们的 nginx 访问日志相关联,我可以看到 302 实际上被返回到客户端。当 CSRF 保护失败时,通常会发生这种情况。

看起来这是由 lograge (gem) bug 引起的:https://github.com/roidrage/lograge/issues/67