因此,我在 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(不确定是什么,这是网络人员说的),因此如果数据包/帧协商失败,超过几百字节的数据包就会中断通信链路。