将文件上传到 tomcat 后端时,代理出现错误 502

将文件上传到 tomcat 后端时,代理出现错误 502

因此,我在 Debian 服务器上安装了 apache 2.2.16 (64 位)。我已配置代理,以便将特定 URL 映射到我的后端 Tomcat 7 服务器。

除了多部分 POST 请求外,所有 GET/POST 请求均运行正常。apache 的错误日志显示以下内容:

[error] [client CLIENT_IP] (20014)Internal error: proxy: error reading status line from remote server TOMCAT_IP:8081
[error] [client CLIENT_IP] proxy: Error reading from remote server returned by /svc/document

奇怪的是,如果我上传一个零 Kb 文件,POST 多部分功能可以正常工作,但上传其他文件(不超过几个字节)时会失败。在我的开发环境(XAMPP + mod_proxy + tomcat)上,包括上传在内的所有内容都可以正常工作

Tomcat 7 连接器:

<Connector port="8081" protocol="HTTP/1.1" address="TOMCAT_IP" maxThreads="6000"
               connectionTimeout="40000" URIEncoding="UTF-8" maxPostSize="8388608" 
               redirectPort="8443" />

代理配置如下:

<VirtualHost *:80>
      DocumentRoot /var/www/frontend/
      ServerName frontend.com

      ProxyPass /svc/ http://[TOMCAT_IP]:8081/web/ connectiontimeout=40 timeout=60 Keepalive=On min=20 acquire=20 retry=1
 </VirtualHost>

我甚至尝试了一些建议,一个接一个地尝试,就像在类似的问题上发现的那样,但没有运气:

<VirtualHost *:80>
  DocumentRoot /var/www/frontend/
  ServerName frontend.com

  ProxyPass /svc/ http://[TOMCAT_IP]:8081/web/ connectiontimeout=40 timeout=60 Keepalive=On min=20 acquire=20 retry=1

  ProxyBadHeader Ignore
  ProxyRequests Off
  LimitRequestBody 8388608
  SetEnv proxy-sendchunked 1
</VirtualHost>

我尝试了 ProxyPassReverse、raise timeout、ProxyBadHeader Ignore、setenv proxy-initial-not-pooled 1 等,但似乎都没有用...有什么想法吗?

答案1

因此,为了满足任何人的好奇心并供将来参考:

没有任何问题,无论是 Tomcat 端还是代理端。问题在于中间的网络。似乎有一个交换机/路由器没有配置 MTU(不确定是什么,这是网络人员说的),因此如果数据包/帧协商失败,超过几百字节的数据包就会中断通信链路。

相关内容