Tôi đã có apache như một máy chủ back-end, chạy các tập lệnh php và nginx như một máy chủ proxy ngược tương tác với nội dung tĩnh. Một tập lệnh php, cung cấp cho tôi ID của một số quy trình và sau đó thực hiện quá trình này (khá dài). Tôi cần phải vượt qua để trình duyệt chỉ ID của proccess đó.Nginx làm proxy ngược trong khi bỏ phiếu dài
// ...
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
(tôi kiểm tra tình trạng của proccess với một ajax-script)
này hoạt động tốt dưới một mình apache. Nhưng tôi có vấn đề khi apache là đằng sau nginx. Trong trường hợp này, tôi chỉ nhận được phản hồi khi quá trình xử lý hoàn tất.
thiết lập nginx:
server {
#...
proxy_set_header Connection close;
proxy_pass_header Content-Length;
#...
}
Nhưng tôi vẫn nhận được kết nối giữ-sống trong Firebug.
Làm thế nào tôi có thể nhận nginx ngay lập tức đưa ra phản hồi từ apache?
Hy vọng câu hỏi là rõ ràng.
Cảm ơn.
bạn đã thử proxy_buffering tắt trong nginx? Không chắc chắn nó sẽ đóng kết nối nhưng ít nhất là phản ứng sẽ được truyền như là cho khách hàng. – regilero
@regilero hoạt động! Tôi đoán kết hợp với một số chỉ thị 'vị trí' tôi sẽ nhận được proxy_buffering làm việc cho phần còn lại nội dung và giải pháp làm việc cho kịch bản của tôi. Bạn nên đăng bài này như một câu trả lời. – SaltLake