【问题标题】:Intermittent NGINX error: client sent invalid chunked body间歇性 NGINX 错误:客户端发送了无效的分块正文
【发布时间】:2019-01-22 11:31:16
【问题描述】:

我遇到了一个奇怪的问题,NGINX 间歇性地返回 400 并显示错误日志

2018/08/15 07:08:38 [错误] 3794#3794: *961526 客户端发送了无效的分块正文,客户端:10.$$.$$.$$,服务器:$$.api.$$ .com,请求:“PUT /v2/$$ HTTP/1.1”,主机:“$$.api.$$.com”

这个错误什么时候出现?

关于我如何提出请求的一些背景信息:

我正在使用 org.apache.http.impl.client.CloseableHttpClient 进行 http 调用。

问题是问题不一致。我从我的本地尝试并且代码总是有效,但是当我们从 jenkins 运行相同的命令时,它对于特定的有效负载失败。我尝试在本地使用相同的 java 版本,它总是有效。更奇怪的是,有时甚至来自同一个詹金斯它也有效。

有人指点吗?

【问题讨论】:

  • 我们遇到了类似的问题。你已经能够解决了吗?您是否在管道的任何部分使用 Netty?您是否有客户端服务器和主机服务器的版本(以及它们正在运行的服务器是什么......)?我们的直觉是它是 Netty,我们想向 project reactor 提交一些东西......您的输入将有助于分类
  • 是的,正如@RankWeis 建议的那样,nginx、apache http client+core、java 和 netty(如果适用)的版本可能是相关的。
  • @RankWeis 请查看我的答案,如果您需要更多详细信息,请告诉我。

标签: java http nginx http-1.1


【解决方案1】:

很抱歉,我忘记更新这个答案了。 我的问题原来是设置不正确的内容类型

改变

entity.addBinaryBody("zipFile", zipFileStream, contentTypeApplicationZip, zipFileName);

entity.addPart("zipFile", new ByteArrayBody(IOUtils.toByteArray(zipFileStream), zipFileName));

解决了这个问题。

【讨论】:

    猜你喜欢
    • 2017-11-28
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 2021-04-20
    • 2018-09-02
    • 2016-07-31
    • 2015-08-09
    • 2021-04-24
    相关资源
    最近更新 更多