Перейти к содержанию

form-input: Модуль ввода форм NGINX

Установка

Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:

  • RedHat Enterprise Linux 7, 8, 9 и 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-form-input
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-form-input

Активируйте модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:

load_module modules/ngx_http_form_input_module.so;

Этот документ описывает nginx-module-form-input v0.12, выпущенный 16 мая 2016 года.


Это модуль nginx, который читает тело HTTP POST и PUT запросов, закодированное в "application/x-www-form-urlencoded", и разбирает аргументы в теле запроса в переменные nginx.

Этот модуль зависит от модуля ngx_devel_kit (NDK).

Использование

set_form_input $variable;
set_form_input $variable argument;

set_form_input_multi $variable;
set_form_input_multi $variable argument;

пример:

#nginx.conf

location /foo {
    # убедитесь, что client_max_body_size == client_body_buffer_size
    client_max_body_size 100k;
    client_body_buffer_size 100k;

    set_form_input $data;    # считывает поле "data" в $data
    set_form_input $foo foo;  # считывает поле "foo" в $foo
}

location /bar {
    # убедитесь, что client_max_body_size == client_body_buffer_size
    client_max_body_size 1m;
    client_body_buffer_size 1m;

    set_form_input_multi $data; # считывает все поля "data" в $data
    set_form_input_multi $foo data; # считывает все поля "data" в $foo

    array_join ' ' $data; # теперь $data - это строка
    array_join ' ' $foo;  # теперь $foo - это строка
}

Ограничения

  • ngx_form_input будет игнорировать тела запросов, которые буферизуются в файлы на диске. Когда настройка client_max_body_size больше, чем client_body_buffer_size, тела запросов, которые больше client_body_buffer_size (но не больше client_max_body_size), будут буферизоваться в файлы на диске. Поэтому важно убедиться, что эти две настройки конфигурации имеют одинаковые значения, чтобы избежать путаницы.

GitHub

Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-form-input.