nginx и http несовместимый сервер.
Ипполитов Игорь
iippolitov на smartlabs.tv
Пн Фев 28 17:58:52 MSK 2011
Есть сервер приложений, который игнорирует заголовки Connection: close; и
версию запроса (1.0 или 1.1): независимо ни от чего, сервер держит
соединение с клиентом открытым.
Есть нгинкс, который проксирует соединение до этого сервера.
Проблема:
Нгинкс проксирует запрос от клиента к серверу приложений, получает ответ с
заголовком Content-Length и далее нужное количество байт в теле ответа.
Если буферизация ответов апстрима включена (proxy_buffering on;), то нгинкс
отдаёт клиенту заголовки ответа, без тела (но с content-length), а в лог
пишет, что
*upstream timed out (110: Connection timed out) while reading upstream*
Если буферизация ответов апстрима выключена (proxy_buffering off;), то ответ
нормально отдаётся клиенту. Но при этом ломается кэширование (кэширование не
работает без буферизации).
Мне удалось найти аналогичную проблему у другого человека:
http://www.ruby-forum.com/topic/166377 . Более того, по ссылке в беседе
участвует и некий Денис Латыпов, который даже предлагает патч.
Вопросы: патч предложенный Денисом не принят в нгинкс? Патч не имеет
отношения к моей проблеме? Что мне можно сделать, кроме изменений в сервер
приложений?
P.S.
Я прекрасно понимаю, что с http-несовместимым сервером нгинкс работать и не
должен, но почему тогда при отключении буферизации ответа всё работает
хорошо?
С уважением,
Ипполитов Игорь.
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://nginx.org/pipermail/nginx-ru/attachments/20110228/f773e5ff/attachment.html>
Подробная информация о списке рассылки nginx-ru