web-dev-qa-db-ja.com

mod_proxyでApacheを使用してマルチパートフォームデータを雑種インスタンスに投稿する際の問題

ローカルマシンで可能な限りサイトの本番環境をシミュレートしようとしています。これはRails Apache w/mod_proxyを使用してリクエストを雑種クラスターに転送するサイトです。MacOSXLeopardマシンでは、Apacheのデフォルトのインストールが実行されており、使用する仮想ホストが構成されています。 mod_proxyは、ポート3000でローカルに実行されているmongrelインスタンスにリクエストを転送します。

<Proxy balancer://mongrel_cluster-development>
BalancerMember http://127.0.0.1:3000
</Proxy>

ほとんどの場合、これは正常に機能しています。構成した仮想ホストのServerNameを使用して開発サイトを参照し、リクエストがmongrelインスタンスに適切に転送されていることを確認できます。ただし、サーバーに画像をアップロードするために使用されるマルチパートフォームを持つページがサイトにあります。このフォームを投稿すると、約5分の遅延が発生し、ブラウザは最終的に

Bad Request
Your browser sent a request that this server could not understand.

私の仮想ホストのエラーログ:

[Tue Sep 22 09:47:57 2009] [error] (70007)The timeout specified has expired: proxy: prefetch request body failed to 127.0.0.1:3000 (127.0.0.1) from ::1 ()

Mongrelインスタンスを直接参照する場合( http://127.0.0.1:30 )、これと同じフォームが正常に機能します。誰かが問題が何であるか、そしてそれを修正する方法を知っていますか?私が含めなかった重要な情報がある場合は、コメントを投稿してください。この質問に追加できます。

注:さらに調査すると、これはSafariに固有の問題のようです。フォームはFirefoxで正常に機能します。

1
Ryan E

この問題は、Cookieヘッダーの長さの制限が原因だと思います。

「RFC2109」のCookieヘッダーの制限は次のとおりです。

  • 少なくとも300個のCookie
  • cookieごとに少なくとも4096バイト
  • 一意のホストまたはドメイン名ごとに少なくとも20個のCookie

Safariが大きなCookieヘッダーを送信するときに、Apacheはそれを解析できませんでした。 tcpmon(またはそのようなもの)を使用してセッションヘッダーを確認する必要がある場合があります。

1
Akio S