ローカルマシンで可能な限りサイトの本番環境をシミュレートしようとしています。これは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で正常に機能します。
この問題は、Cookieヘッダーの長さの制限が原因だと思います。
「RFC2109」のCookieヘッダーの制限は次のとおりです。
Safariが大きなCookieヘッダーを送信するときに、Apacheはそれを解析できませんでした。 tcpmon(またはそのようなもの)を使用してセッションヘッダーを確認する必要がある場合があります。