为什么一个413不能立即被刷新到客户端呢?

我有我的本地开发服务器返回状态413超大file upload和客户正在接收这些立即 – 根据我的要求。

我的远程服务器与Nginx的版本相同,configuration也差不多,但413永远不会到达浏览器。

指示数据过大的错误将立即显示在错误日志中,并且访问日志中不显示任何内容。 浏览器继续发送数据,并且在30秒之后,413状态出现在访问日志中(并且再次出现在错误日志中),并且浏览器由于内部“连接重置”错误而超时。

远程服务器上的哪些configuration可能会导致此延迟?

问题是大多数HTTP客户端在发送整个请求体之前不会读取响应。 如果你正在处理web浏览器,你可能在这里运气不好。 你可以做的唯一的服务器端configuration是将keepalive_requests设置为0(禁用永久连接),这可能会使得nginx在发送413之后closures连接,这应该导致客户端停止发送数据。 但客户端可能会报告networking错误,而不是413。

我猜浏览器还是要完成上传,才能收到413错误。 检查文件大小的最好方法是在点击上传button之前在JS中检查它。