Nginx в качестве обратного прокси во время длительного опроса

У меня есть apache в качестве внутреннего сервера, который запускает скрипты php и nginx в качестве обратного прокси-сервера, который имеет дело со статическими содержание. PHP-скрипт, который дает мне идентификатор некоторого процесса, а затем выполняет этот процесс (довольно долго). Мне нужно передать браузеру только идентификатор этого процесса.

  // ...
  ob_start();

  echo json_encode($arResult); // only this data should be passed to browser

  $contentLength = ob_get_length();
  header('Connection: close');
  header('Content-Length: ' . $contentLength);

  ob_end_flush();
  ob_flush();
  flush();
  // then performed a long process

(я проверяю статус процесса с помощью другого ajax-скрипта)

Это отлично работает только с apache. Но у меня проблемы, когда apache находится за nginx. В этом случае я получаю ответ только тогда, когда процесс полностью завершен.

Настройки nginx:

server {
  #...
  proxy_set_header Connection close;

  proxy_pass_header Content-Length;
  #...
}

Но я все еще получаю подтверждение активности соединения в FireBug.

Как я могу заставить nginx немедленно дать ответ от apache?

Надеюсь, вопрос ясен.

Спасибо.

6
задан SaltLake 22 January 2011 в 04:15
поделиться