Я пытаюсь максимально точно смоделировать производственную среду своего сайта на своем локальном компьютере. Это сайт rails, который использует Apache w / mod_proxy для пересылки запросов в кластер mongrel. На моем компьютере Mac OSX Leopard у меня есть установка apache по умолчанию, и я настроил vhost для использования mod_proxy для пересылки запросов на локальный запущенный экземпляр mongrel на порту 3000.
<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:3000). Кто-нибудь знает, в чем может быть проблема и как ее исправить? Если есть какая-либо важная информация, которую я не включил, оставьте комментарий, и я могу добавить к этому вопросу.
Примечание. После дальнейшего исследования выяснилось, что это проблема, специфичная для Safari. Форма отлично работает в Firefox.
Я думаю, что эта проблема связана с ограничением длины заголовка cookie.
Ограничение RFC 2109 для заголовка cookie приведено ниже:
Когда через какое-то время Safari отправляет большой заголовок cookie, Apache не может его проанализировать. Возможно, вам придется проверить заголовок сеанса с помощью tcpmon (или подобного).