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

Maxim Dounin mdounin на mdounin.ru
Ср Янв 19 15:52:27 MSK 2011


Hello!

On Wed, Jan 19, 2011 at 06:02:18PM +0600, Ilya Kuznetsov wrote:

> 19 января 2011 г. 17:27 пользователь Maxim Dounin <mdounin at mdounin.ru> написал:
> > Keepalive соединение может быть закрыто в любой момент.  Если
> > клиент в шоке - он глубоко неправ.
> Это так, но почему поведение именно такое? Насколько вижу я,
> необходимости закрывать соединение нет.

HEAD-запросы при наличии proxy_cache/proxy_store отправляются на 
бекенд как GET, и в контексте того же соединения nginx получает (и 
сохраняет в кеш) тело ответа.  Соединение закрывается после 
отправки заголовка чтобы а) не отправлять клиенту тело и б) клиент 
не ждал, когда этот процесс завершится.  То же самое будет и для 
If-Modified-Since запросов (если ответа нет в кеше, а у клиента он 
уже есть).

Безусловно, текущая реализация не идеальна, правильнее было бы 
получать тело в каком-нибудь другом контексте или хотя бы отдавать 
в таких ситуациях "Connection: close".  Но каких-либо нарушений 
протокола в этом месте я не вижу.

Maxim Dounin



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