subs_buffers
Директива 'subs_buffers' задаёт количество и размер буферов, используемых для хранения временных данных при подстановке строк в ответах NGINX.
Описание
Директива 'subs_buffers' является частью модуля String Substitutions для NGINX, который позволяет заменять указанные строки в выходном ответе до того, как он достигнет клиента. Эта директива помогает контролировать, каким образом модуль выделяет буферы, которые он использует для обработки операций подстановки. Два параметра, которые она принимает, определяют соответственно число буферов и их размеры. Правильная настройка этих значений может привести к более эффективному использованию памяти и повышению производительности при динамической подстановке содержимого.
Первый аргумент обозначает количество буферов для выделения, а второй указывает размер каждого буфера. С помощью этих буферов модуль может эффективно обрабатывать замену строк в входящих HTTP-ответах, читая данные управляемыми блоками и тем самым избегая возможного исчерпания памяти при работе с большими телами ответов. Например, задав 'subs_buffers 8 16k;', вы выделите 8 буферов по 16 килобайт каждый. Это может быть особенно полезно в условиях высокого трафика или при обработке ответов с большим количеством встроенных переменных.
При использовании этой директивы важно учитывать ожидаемый размер ответов и количество одновременных подключений, поскольку некорректная конфигурация может привести к узким местам в производительности или к чрезмерному потреблению памяти. Для поиска оптимальных настроек для конкретного сценария может потребоваться экспериментирование.
Пример конфига
location / {
subs_buffers 8 16k;
subs_filter a.example.com b.example.com;
}Установка слишком большого числа buffers или чрезмерно большого buffer size может привести к увеличению memory usage.
Если buffers недостаточны, NGINX может неправильно обработать более крупные responses, что приведёт к substitution errors или неполному выводу.