set_form_input

Устанавливает значение указанных полей формы из HTTP POST and PUT requests в NGINX.

Синтаксисset_form_input $variable [argument];
По умолчаниюnone
Контекстhttp, server, location
Аргументы1-2

Описание

Директива set_form_input является частью модуля ввода форм NGINX, который обрабатывает тип содержимого application/x-www-form-urlencoded в HTTP requests. Эта директива позволяет захватывать значения полей формы, отправленных в теле запроса, непосредственно в переменные для дальнейшей обработки. Она может использоваться с максимум двумя аргументами; первый — это переменная для заполнения, а необязательный второй аргумент — конкретное имя поля формы для извлечения. Если имя поля не указано, будет прочитано всё содержимое тела в указанную переменную.

Эту директиву можно настраивать в различных контекстах, включая http, server и location. При вызове NGINX будет разбирать тело запроса при получении соответствующего запроса, при условии что метод запроса — POST или PUT. Вариант set_form_input_multi позволяет захватывать несколько значений для одного поля, сохраняя их в структуре, похожей на массив, которую затем можно обрабатывать другими директивами, такими как array_join. Необходима тщательная настройка размеров тела запроса с помощью директив вроде client_max_body_size и client_body_buffer_size, чтобы избежать усечения входных данных.

В заключение, set_form_input не только помогает заполнять переменные данными из запросов, но и позволяет разработчикам эффективно создавать динамичные и интерактивные веб-приложения. Взаимодействие этой директивы с другими конфигурационными директивами может значительно расширить возможности NGINX как веб‑сервера при обработке динамических форм и вводов пользователей.

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

location /submit {
    client_max_body_size 100k;
    client_body_buffer_size 100k;
    set_form_input $name;
    set_form_input $email email;
}

Убедитесь, что задали соответствующие лимиты для client_max_body_size и client_body_buffer_size, чтобы избежать отбрасывания запросов.

Всегда определяйте переменную для корректного захвата данных; в противном случае вы можете получить пустые значения.

Использование в неправильном контексте (например, в if-блоках) может привести к непредвиденному поведению. Используйте только в контекстах location или выше.

← Ко всем директивам