Может ли NGINX дать команду передать файл по HTTP, который находится в процессе создания?

Я использую NGINX в качестве компонента в моей системе, который принимает контент, передаваемый с клиентов (скажем, через RTMP), и передает его какой-то внутренней службе для обработки. Внутренняя служба извлекает контент из NGINX через HTTP.

Но я не хочу ждать, пока клиент полностью передаст все свое содержимое, прежде чем я начну обработку, поэтому я хотел бы, чтобы внутренняя служба начала извлекать содержимое, как только станет доступен первый байт - проблема в том, что если клиентские потоки медленнее, чем скорость, с которой внутренняя служба может извлекать данные из NGINX (что всегда имеет место), NGINX достигает текущего конца файла и прекращает обслуживание содержимого.

Есть ли способ заставить NGINX начать обслуживание файла, конечный размер которого неизвестен (очевидно, с помощью Transfer-Encoding: chunked), и не разорвать соединение, пока не будут отправлены все (пока еще не предоставленные) данные?

Я попытался обслужить содержимое FIFO, но NGINX просто игнорирует FIFO, возвращая вместо 404 Not Found. Я также посмотрел на модуль NGINX HLS, но, похоже, для этого требуются файлы в формате MPEG-4, что неприменимо для моего варианта использования.

0 ответов

Другие вопросы по тегам