Tengo apache como servidor de fondo, que ejecuta scripts php y nginx como un servidor proxy inverso que trata con contenido estático. Un php-script, que me da ID de algún proceso y luego realiza este proceso (bastante largo). Necesito pasarle al navegador solo la ID de ese proceso.Nginx como proxy inverso durante el sondeo largo
// ...
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
(puedo comprobar el estado de la proccess con otro ajax-script)
Esto funciona bien bajo Apache solo. Pero tengo problemas cuando Apache está detrás de nginx. En este caso, recibo respuesta solo cuando el proceso está completamente terminado.
configuración de nginx:
server {
#...
proxy_set_header Connection close;
proxy_pass_header Content-Length;
#...
}
Pero sigo teniendo la conexión de mantenimiento de conexión en FireBug.
¿Cómo puedo obtener nginx para dar inmediatamente una respuesta de apache?
Espero que la pregunta sea clara.
Gracias.
has necesitado proxy_buffering apagado en nginx? No estoy seguro de que cerrará la conexión, pero al menos la respuesta se transmitirá tal cual al cliente. – regilero
@regilero esto funciona! Supongo que en combinación con algunas directivas 'location' tendré funcionando proxy_buffering para el resto del contenido y la solución de trabajo para mi script. Deberías publicar esto como una respuesta. – SaltLake