【问题标题】:Handling nginx errors in node/express处理 node/express 中的 nginx 错误
【发布时间】:2014-04-09 09:00:55
【问题描述】:

我已将 nginx 设置为将文件上传大小限制为 2MB,并已将 express 设置为允许相同的大小:

nginx:

server {
    client_max_body_size 2M;
}

快递:

app.use(express.limit('2mb'));

在我的文件上传处理程序中,我记录了我得到的错误,并且有一次我得到了一个对象,它给了我状态代码和更多有用的信息。重新启动服务器后,我突然停止获取该错误对象,现在在其位置上获取了一串 HTML。

HTML 是您希望在 nginx 屏幕上看到的输出:

<html>
<head><title>413 Request Entity Too Large</title></head>
<body bgcolor="white">
<center><h1>413 Request Entity Too Large</h1></center>
<hr><center>nginx/1.4.4</center>
</body>
</html>

这是为什么?如何确保我只返回一个错误对象而不是这个不太有用的字符串?

发送响应的回调是:

callbacks.uploadFailure = function(err){
    res.send(413, err);
};

我也尝试过返回 json:

callbacks.uploadFailure = function(err){
    res.json(413, err);
};

在我可以做类似的事情之前:

if(err.error.status === 413) {$scope.errmsg = 'File upload too large.'}

但现在我不能这样做,因为 err 仅包含上面列出的 html 字符串,我需要解析这个字符串以确定错误是什么。显然我不想那样做。

关于为什么我没有得到错误对象的任何建议或解释?

【问题讨论】:

  • 我怀疑问题是 Nginx 在您的 Express 代码之前发现了错误。尝试将 nginx 中的值调高一点(比如 3M),然后重新启动服务器。
  • 就是这样。我想我可以将 nginx 设置为一个非常高的值,然后输入一些代码来处理它作为边缘情况。赫克托,这是一个正确的答案,我可以接受。谢谢!

标签: node.js angularjs nginx


【解决方案1】:

我怀疑问题在于 Nginx 在您的 Express 代码之前发现了错误,这就是您看到 Nginx 错误页面而不是您的 Express 响应的原因。

尝试将 nginx 中的值调高一点(比如 3M),然后重新启动服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2016-04-07
    相关资源
    最近更新 更多