$proxy_internal_chunked

$proxy_internal_chunked указывает, должны ли внутренние ответы отправляться с использованием chunked transfer encoding. — NGINX Core (HTTP)

$proxy_internal_chunked NGINX Core (HTTP)

Описание

Переменная $proxy_internal_chunked управляет методом кодирования передачи, используемым NGINX для внутренних ответов, пересылаемых модулем proxy. Когда она установлена в "on", это означает, что ответы без заранее заданного заголовка Content-Length должны передаваться с использованием chunked transfer encoding, что позволяет отправлять данные клиентам по мере их готовности. Это особенно полезно для динамического контента, когда длина ответа заранее неизвестна. Эта переменная обычно задается в location blocks или server contexts, преимущественно при proxying, когда запрос клиента обрабатывается backend server. Поведение по умолчанию в NGINX использует chunked encoding, если upstream server не указывает заголовок Content-Length, что позволяет клиентам начинать обработку ответа сразу, не ожидая отправки всего тела. Разработчики могут выборочно включать или отключать эту функцию в зависимости от конкретных сценариев использования и поведения upstream services, к которым они подключаются, что делает её гибким инструментом управления тем, как данные обслуживаются. На практике $proxy_internal_chunked может дать прирост производительности при обработке больших или потоковых ответов, но он может вносить сложности для клиентов, которые могут неправильно обрабатывать chunked responses. Поэтому при настройке NGINX для использования этой переменной следует внимательно учитывать совместимость клиентов и возможные последствия для производительности.

Пример конфига

location /api {
    proxy_pass http://backend;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_buffering off;
    # Enable chunked transfer for internal responses
    set $proxy_internal_chunked on;
}

Подсистема

http

Кэшируется

Нет

Контексты

http, server, location, if

Убедитесь, что upstream servers могут корректно обрабатывать chunked transfer encoding, поскольку некоторые старые клиенты могут не поддерживать его.

Отключение буферизации с помощью 'proxy_buffering off;' может привести к непредвиденным проблемам с производительностью, если upstream работает медленно.

Помните, что chunked responses могут усложнять доставку контента по HTTP/1.0 и могут не работать с некоторыми прокси или посредниками.