У меня есть 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?
Надеюсь, вопрос ясен.
Спасибо.