HEAD и proxy_pass: закрывается keep-alive соединение

Ilya Kuznetsov worklez на gmail.com
Ср Янв 19 11:34:20 MSK 2011


Hello!

Возникла проблема: nginx закрывает keep-alive соединение с клиентом,
сделавшим HEAD запрос.

А теперь подробнее. Все запрашиваемые данные - статические файлы.

Вариант 1 (проблемный)
1. Клиент спрашивает HEAD /foo
2. nginx не находит ответа в кэше (try_files /cached/foo
@download_foo), идёт на апстрим, получает ответ
3. nginx передаёт ответ клиенту, клиент получает в заголовках
Connection: keep-alive
4. nginx закрывает соединение, клиент в шоке

Вариант 2 (хороший)
1. Клиент спрашивает HEAD /foo
2. nginx находит foo в кэше
3. nginx отвечает клиенту, клиент получает в заголовках Connection: keep-alive
4. nginx ждёт нового запроса от клиента пока не случится таймаут. ок

Вариант 3 (хороший)
1. Клиент спрашивает GET /foo
тогда, независимо от того, есть в кэше foo или нет, соединение не закрывается.

Версия nginx 0.8.53. Если этого описания недостаточно, готов выложить
выдержки из конфигов и дебажный error.log.

--
WBR,
Ilya Kuznetsov.


Подробная информация о списке рассылки nginx-ru