请求实体太大(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)的主要内容,如果未能解决你的问题,请参考以下文章