我有一个后端服务器使用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中仍然显示连接保持活动状态。
我该如何让nginx立即从apache中获得响应呢?
希望问题清晰明了。
谢谢。
location
指令,我将为其余内容获得工作代理缓冲和我的脚本的工作解决方案。你应该把这个作为一个答案发布。 - foreline