请求实体太大(JasperServer / Apache / Tomcat)

Posted

技术标签:

【中文标题】请求实体太大(JasperServer / Apache / Tomcat)【英文标题】:Request Entity Too Large (JasperServer / Apache / Tomcat) 【发布时间】:2017-03-24 09:12:02 【问题描述】:

当我尝试访问一些 JasperReports 服务器页面时出现以下错误:

请求实体太大 请求的资源 /jasperserver/olap/viewOlap.html 不允许使用 GET 请求数据 请求,或请求中提供的数据量超过 容量限制。

我检查了 Apache 日志文件并在 mod_jk.log 中得到以下错误

[2016 年 11 月 10 日星期四 10:25:00][8964:3876] [错误] ajp_marshal_into_msgb::jk_ajp_common.c (517): 附加失败 长度为7417的查询字符串

我已经尝试了很多不同的方法来解决它。

我在Tomcat(server.xml)的ajp连接中添加了maxHttpHeaderSize和max_packet_size属性:

<Connector port="8010" protocol="AJP/1.3" connectionTimeout="20000" redirectPort="8443" maxHttpHeaderSize="65536" max_packet_size="65536" />

我还在 Apache httpd.conf 文件中添加了 LimitRequestLine、LimitRequestBody、LimitRequestFieldSize 和 LimitRequestFields(在没有任何 VirtualHost 的情况下将其添加到文件末尾):

LimitRequestLine 65536 LimitRequestBody 0 LimitRequestFieldSize 65536 LimitRequestFields 10000

我仍然收到上述错误。

我还发现了一些将 max_packet_size 添加到 Apache 的 workers.properties 的建议。但是,如果我添加该属性,则会收到 HTTP 400 错误和白页。这就是我在workers.properties 中评论该属性的原因:

#worker.jasper.max_packet_size=65536

更改配置后我重新启动了所有服务。

当我通过 Tomcat 的 HTTP 连接器 (http://HOSTNAME:8081/jasperserver/..) 访问相同的页面时,它工作正常。只有当我通过 Apache 的 AJP-Connector (http://HOSTNAME/jasperserver/..) 访问它时,我才会收到错误消息。所以我认为AJP-Connector应该有问题。

阿帕奇:2.4.12 JasperReports 服务器:6.2.1 Apache Tomcat 版本 8.0.14:

有没有人建议我必须做些什么来解决这个问题?

【问题讨论】:

【参考方案1】:

我发现了问题。

Tomcat 的 server.xml 中的属性必须是 packetSize 并不是 max_packet_size

另见文档AJP Connector

重命名后,就可以正常使用了。

这是我的配置:

Tomcat server.xml:

Connector port="8010" protocol="AJP/1.3" redirectPort="8443" packetSize="65536"

Apache workers.properties:

worker.jasper.max_packet_size=65536

如果你之后得到错误:

请求-URI 太长

请求的 URL 的长度超过了此服务器的容量限制。

您必须在 Apache httpd.conf 文件中设置以下属性:

LimitRequestLine 65536 LimitRequestBody 0 LimitRequestFieldSize 65536 LimitRequestFields 10000

我希望这个答案也对其他人有所帮助。

【讨论】:

将“ProxyIOBufferSize 65536”也添加到 Apache 是解决方案

以上是关于请求实体太大(JasperServer / Apache / Tomcat)的主要内容,如果未能解决你的问题,请参考以下文章

响应:413 请求实体太大

PayloadTooLargeError:请求实体太大

私有 NuGet 服务器:请求实体太大

请求实体太大 WCF REST 服务

413请求实体太大

Apache / 2.2.3(CentOS)中的请求实体太大[重复]