Apache-2.2

將文件上傳到tomcat後端時代理給出錯誤502

  • August 24, 2015

所以,我在 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 multipart 工作正常,但其他文件失敗(不超過幾個字節)。一切,包括上傳在我的開發環境(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、提高超時、ProxyBadHeader Ignore、setenv proxy-initial-not-pooled 1 等。似乎沒有任何效果……知道嗎?

因此,出於任何人的好奇心和任何未來的參考:

Tomcat 端和代理端都沒有問題。問題在於中間的網路。似乎一台交換機/路由器沒有配置 MTU(不確定它是什麼,這就是網路人員所說的),因此如果數據包/幀協商對於大於幾百字節的數據包失敗,通信鏈路將會中斷。

引用自:https://serverfault.com/questions/711690