1

IE8 を使用して、Apache リバース プロキシ経由でリモート Web サーバーにファイルをアップロードできません。リクエストとレスポンスの追跡には Fiddler を使用しました。約 17KB を超えるサイズの .txt が添付されたフォームを送信すると、次のエラーが表示されます: Proxy Error 502. 同じフォームから同じファイルの小さいバージョンを送信すると機能します。 これは何が原因で、他のブラウザでは発生しないのはなぜですか?

更新 -- フィドラーをCache-Control: no-cache使用して、Firefox で使用されていないことに気付いた行を削除したところ、機能しました。どのように修正するのかわからないので、疑問は残ります。

失敗時の対応

HTTP/1.1 502 Proxy Error
Date: Tue, 17 Sep 2013 14:16:56 GMT
Server: Apache/2.4.3 (Unix) OpenSSL/1.0.1c
Content-Length: 468
Keep-Alive: timeout=30, max=96
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>502 Proxy Error</title>
</head><body>
<h1>Proxy Error</h1>
<p>The proxy server received an invalid
response from an upstream server.<br />
The proxy server could not handle the request <em><a href="/this/is/not/the/real/url.ajax">POST&nbsp;/this/is/not/the/real/url.ajax</a></em>.<p>
Reason: <strong>Error reading from remote server</strong></p></p>
</body></html>

失敗したリクエスト ヘッダー

POST https://www.foo.com/blah.ajax HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */*
Referer: https://www.mysite.com/blah.html
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Content-Type: multipart/form-data; boundary=---------------------------7dd2702f50124
Accept-Encoding: gzip, deflate
Host: www.mysite.com
Content-Length: 412501
Connection: Keep-Alive
Cache-Control: no-cache
(cookies and data removed for brevity...)

正常な応答

HTTP/1.1 200 OK
Date: Tue, 17 Sep 2013 15:10:34 GMT
Server: myServer
Accept-Ranges: bytes
Cache-Control: no-cache
Content-Length: 59
Content-Type: text/html; charset=utf-8
Expires: Tue, 17 Sep 2013 16:10:34 GMT
Pragma: no-cache
Keep-Alive: timeout=30, max=100
Connection: Keep-Alive
{
   "received":"what I expected"
}

成功したリクエスト ヘッダー

POST https://www.foo.com/blah.ajax HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */*
Referer: https://www.mysite.com/blah.html
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Content-Type: multipart/form-data; boundary=---------------------------7dd983550124
Accept-Encoding: gzip, deflate
Host: www.mysite.com
Content-Length: 1287
Connection: Keep-Alive
Cache-Control: no-cache
(cookies and data removed for brevity...)

更新 2 より明確になり始めています。私の Apache リバース プロキシ サーバーはこのエラーをスローしました。これは、Google に基づいて、プロキシとサーバーの間の接続が時期尚早に閉じられたことを示しているようです。

[Mon Sep 16 17:06:24.983899 2013] [proxy:error] [pid 14796:tid 140093427799808] 
[client myipaddress:port] AH00898: Error reading from remote server returned by 
/the/requested/page, referer: 
https://www.mySite.com
4

1 に答える 1

1

Apache サーバーのプロキシ構成ファイルでこれらの行をコメントアウトすると、問題は発生しなくなりました。なぜこれが起こったのかを説明できる人がいれば、私は彼らの功績を認めます. グーグルから、何かがサーバーとプロキシの接続を時期尚早に閉じていたような気がするので、nokeepaliveディレクティブが問題だった可能性があります。このソリューションが根本的な問題に対処していないことを少し心配しています。

# SetEnv force-proxy-request-1.0 1
# SetEnv proxy-nokeepalive 1

アップデート

Apache docsでいくつかの調査を行いました。オリジンサーバーが「キープアライブまたは HTTP/1.1 を適切に実装」していないようです。

于 2013-09-18T19:44:20.333 に答える