ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: proxy q



On Fri, 23 Sep 2005, Alexander Burnos wrote:

Есть nginx, который принимает https GET запросы и отдает их бэкенду по http.

Задача стоит такая, чтобы отдавать ответ клиенту, по мере выдачи его
бэкендом, а не тогда, когда бэкенд окончит request.

Пробовал играться с буферами для этой цели, вроде:

       location  /myurl/ {
        proxy_buffers 2 1;
        proxy_busy_buffers_size 1;
        proxy_header_buffer_size 1;
        proxy_pass   http://backend/;
       }

Предпологая, что в этом случае nginx будет отдавать ответ backend'а
клиенту сразу, как только получит хоть один байт.
Но в итоге лишь получают от nginx 502 Bad Gateway.

Можно ли как-то решить эту задачу стандартными средствами?

Я уже задавал этот вопрос Игорю Сысоеву, но ступил и некорректно
сформулировал задачу. Спросил, можно ли потоково передавать запрос
клиента бэкенду. Он ответил что это невозможно в текущей реализации.
А что насчет обратной задачи? Передавать ответ бэкенда по мере его выдачи 
клиенту.

proxy_header_buffer_size не может быть меньше, чем размер заголовка ответа,
из-за этого и 502.

nginx передаёт ответа бэкенда по мере его поступления, но при этом
ещё и буферизует. Что-то близкое к потоку могло бы получится при таких
настройках:

      proxy_header_buffer_size  512;
      proxy_buffers             2 512;
      proxy_busy_buffers_size   512;
      proxy_max_temp_file_size  0;

Но если ответ https, то там используется 16K буфер для уменьшения
оверхеда SSL.


Игорь Сысоев
http://sysoev.ru



  • References:

 




Copyright © Lexa Software, 1996-2009.