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