
Я использую NGINX как компонент в моей системе, который принимает контент, передаваемый потоком от клиентов (скажем, по RTMP), и передает его на некоторую внутреннюю службу для обработки. Внутренняя служба извлекает контент из NGINX по HTTP.
Но я не хочу ждать, пока клиент полностью передаст весь свой контент, прежде чем начать обработку, поэтому я хочу, чтобы внутренняя служба начала извлекать контент, как только станет доступен первый байт. Проблема в том, что если клиент передает данные медленнее, чем внутренняя служба может извлекать их из NGINX (что всегда так), NGINX достигает текущего конца файла и прекращает обработку контента.
Есть ли способ заставить NGINX начать обслуживание файла, окончательный размер которого неизвестен (очевидно, с Transfer-Encoding: chunked), и не разрывать соединение до тех пор, пока все (еще не предоставленные) данные не будут отправлены?
Я пробовал обслуживать содержимое FIFO, но NGINX просто игнорирует FIFO, возвращая вместо этого 404 Not Found. Я также рассмотрел модуль NGINX HLS, но он, похоже, требует, чтобы файлы были в формате MPEG-4, что неприменимо к моему варианту использования.