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

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

Установка для Debian/Ubuntu

Эти документы относятся к пакету APT nginx-module-form-input, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте APT репозиторий, как описано в настройке APT репозитория.
  2. Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-form-input
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия            | Компонент   | Архитектуры    |
|-------------|-------------------|-------------|-----------------|
| debian      | bookworm          | main        | amd64, arm64    |
| debian      | bookworm-mainline | main        | amd64, arm64    |
| debian      | trixie            | main        | amd64, arm64    |
| debian      | trixie-mainline   | main        | amd64, arm64    |
| ubuntu      | focal             | main        | amd64, arm64    |
| ubuntu      | focal-mainline    | main        | amd64, arm64    |
| ubuntu      | jammy             | main        | amd64, arm64    |
| ubuntu      | jammy-mainline    | main        | amd64, arm64    |
| ubuntu      | noble             | main        | amd64, arm64    |
| ubuntu      | noble-mainline    | main        | amd64, arm64    |

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

Описание

Это модуль 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) будут буферизованы в файлы на диске. Поэтому важно, чтобы эти два параметра конфигурации имели одинаковые значения, чтобы избежать путаницы.