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