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