proxy_force_ranges
Директива proxy_force_ranges позволяет NGINX обслуживать запросы частичного содержимого через прокси, принуждая прокси обрабатывать range requests.
Описание
proxy_force_ranges директива, когда установлена в on, указывает NGINX включать range requests для проксируемого содержимого. Эта директива особенно важна, когда upstream server не поддерживает range requests, так как она гарантирует, что частичное содержимое всё равно может быть корректно отправлено за счёт того, что NGINX при необходимости изменяет заголовки Range. Это фактически позволяет клиентам запрашивать конкретные части ресурса, снижая использование полосы пропускания и повышая отзывчивость при работе с большими файлами, такими как видео или архивы.
Когда директива включена, NGINX полностью контролирует Range requests от клиентов, пересылая требуемые диапазоны upstream server. Если upstream server не поддерживает range requests, NGINX выполнит необходимую сегментацию полученных данных и доставит их клиенту так, как если бы upstream поддерживал диапазоны, обеспечивая бесшовную работу даже при ограниченных возможностях upstream. Это улучшает опыт клиента, особенно в сценариях с большими наборами данных или медиафайлами.
Следует отметить, что использование этой директивы может незначительно повлиять на производительность, поскольку требуется дополнительная обработка для работы с range requests, особенно когда проксируется весь контент, а upstream не обрабатывает range requests напрямую. Кроме того, включение этой директивы может усложнить обработку ответов, поскольку NGINX должен тщательно управлять байтовыми диапазонами, указанными клиентами, и ответами, получаемыми от upstream servers.
Пример конфига
location /files {
proxy_pass http://backend;
proxy_force_ranges on;
}Убедитесь, что upstream-сервер не может обрабатывать запросы с диапазонами, иначе это может привести к непредвиденному поведению.
При включении эта директива требует соответствующего тестирования, чтобы убедиться, что производительность не ухудшится неожиданно из-за накладных расходов NGINX на управление диапазонами.