使用Apache作为Apache Tomcat服务器的反向代理时,我一直收到此错误,每当我尝试下载损坏的PDF时,服务器的响应就为空,并在Apache日志中得到此错误:
AH01328: Line too long, URI /uri/moreruri/docNum, referer: https://example.com/uri/moreruri/docNum
我试图在本地服务器上再次遇到相同的错误(同样是Apache和Apache Tomcat),并且没有发生。
有什么想法可能会发生这种情况吗?预先感谢。
答案 0 :(得分:0)
由于/conf/httpd.conf
配置文件中的这一行而发生此错误:
AddOutputFilterByType SUBSTITUTE application/pdf
Apache试图做的是,只要完成GET并且该GET返回PDF文件,它就会尝试读取该文件并替换特定的文本字符串。
这些替代定义在此行:
Substitute "s|http://localhost:8081|https://example.com|in"
当apache收到GET并发现我们正在请求PDF文件时,它会尝试读取它并替换那些字符串,但是由于文件损坏,apache无法读取它。
然后将所有PDF内容都放入响应主体内的一行中,该行恰好(在我们的特定情况下)大于默认的最大行长(以MB为单位)。
这导致响应被削减,而我们最终得到的是空响应。
我们也有这行:
SubstituteMaxLineLength 5M
它会更改默认的最大行长,但是文件的权重为20MB,此处我们将最大长度设置为5MB,因此在这种情况下不适用。
我们解决该问题的方法是仅删除第一行,因为我们不需要更改PDF的内容:
AddOutputFilterByType SUBSTITUTE application/pdf
但是,您可能希望使用此行更改最大长度:
SubstituteMaxLineLength LENGTH
我不建议这样做,因为出于安全原因默认情况下该限制较低。