我有 apache 作为后端服务器,它运行 php 脚本和 nginx 作为处理静态内容的反向代理服务器。一个 php 脚本,它给我一些进程的 ID,然后执行这个进程(很长)。我只需要将该进程的 ID 传递给浏览器。
// ...
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 中获得 Connection keep-alive。
我怎样才能让 nginx 立即给出来自 apache 的响应?
希望问题很清楚。
谢谢。