События, отправленные сервером через прокси-сервер лака

У меня есть веб-сайт, работающий за прокси-сервером Varnish. Любое соединение, открытое для отправленных сервером событий, никогда не получает никакого содержимого и никогда не закрывается. Varnish, кажется, ждет окончания потока контента, прежде чем перенаправить этот контент в браузер. И он сохраняет соединение с сервером открытым до тех пор, пока содержимое не закончится. Обе эти проблемы несовместимы с событиями, отправленными сервером.

Как настроить Varnish для немедленного сброса контента в браузер и разрыва соединения с сервером, когда браузер закрывает соединение?

Или я могу динамически указать Varnish действовать полностью как сквозной канал для соединений, как если бы его вообще не было? Я могу без проблем запустить точно такое же веб-приложение на системах без прокси. И я не могу полностью обойти Varnish в этой настройке (например, другой порт).


person Matt S    schedule 06.09.2012    source источник


Ответы (1)


Вы пытались вернуть pipe в vcl_recv?

Из документации:

Pipe также можно вернуть из vcl_recv. Pipe замыкает соединение клиента и бэкенда, а Varnish просто сидит там и перетасовывает байты туда-сюда. Varnish не будет просматривать данные, отправляемые туда и обратно, поэтому ваши журналы будут неполными. Помните, что с HTTP 1.1 клиент может отправлять несколько запросов по одному и тому же соединению, поэтому вы должны указать Varnish добавить заголовок «Connection: close» перед фактическим возвратом канала.

Не забывайте, что вы должны возвращать pipe только для входящих запросов SSE.

person Doomsday    schedule 07.09.2012
comment
Отлично, спасибо! Этот плюс set bereq.http.connection = "close"; разрешил это. - person Matt S; 07.09.2012
comment
извините, что снова поднял этот вопрос, интересно, как выглядит ваш default.vcl? У меня точно такая же проблема. У меня есть SSE на серверах go, обрабатывающих SSE в /event_source. спасибо! - person Hokutosei; 19.12.2014