Saltar a contenido

form-input: Módulo de entrada de formulario de NGINX

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y 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

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_form_input_module.so;

Este documento describe nginx-module-form-input v0.12 lanzado el 16 de mayo de 2016.


Este es un módulo de NGINX que lee el cuerpo de las solicitudes HTTP POST y PUT codificado en "application/x-www-form-urlencoded", y analiza los argumentos en el cuerpo de la solicitud en variables de NGINX.

Este módulo depende del módulo ngx_devel_kit (NDK).

Uso

set_form_input $variable;
set_form_input $variable argumento;

set_form_input_multi $variable;
set_form_input_multi $variable argumento;

ejemplo:

#nginx.conf

location /foo {
    # asegurar que client_max_body_size == client_body_buffer_size
    client_max_body_size 100k;
    client_body_buffer_size 100k;

    set_form_input $data;    # leer el campo "data" en $data
    set_form_input $foo foo;  # leer el campo "foo" en $foo
}

location /bar {
    # asegurar que client_max_body_size == client_body_buffer_size
    client_max_body_size 1m;
    client_body_buffer_size 1m;

    set_form_input_multi $data; # leer todos los campos "data" en $data
    set_form_input_multi $foo data; # leer todos los campos "data" en $foo

    array_join ' ' $data; # ahora $data es una cadena
    array_join ' ' $foo;  # ahora $foo es una cadena
}

Limitaciones

  • ngx_form_input descartará los cuerpos de las solicitudes que se almacenan en archivos de disco. Cuando la configuración client_max_body_size es mayor que client_body_buffer_size, los cuerpos de las solicitudes que son más grandes que client_body_buffer_size (pero no más grandes que client_max_body_size) se almacenarán en archivos de disco. Por lo tanto, es importante asegurarse de que estas dos configuraciones tengan los mismos valores para evitar confusiones.

GitHub

Puedes encontrar consejos adicionales de configuración y documentación para este módulo en el repositorio de GitHub para nginx-module-form-input.