form-input: Módulo de entrada de formulário do NGINX
Instalação
Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:
- RedHat Enterprise Linux 7, 8, 9 e 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 e 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
Ative o módulo adicionando o seguinte no início de /etc/nginx/nginx.conf:
load_module modules/ngx_http_form_input_module.so;
Este documento descreve o nginx-module-form-input v0.12 lançado em 16 de maio de 2016.
Este é um módulo do nginx que lê o corpo da requisição HTTP POST e PUT codificado em "application/x-www-form-urlencoded" e analisa os argumentos no corpo da requisição em variáveis do nginx.
Este módulo depende do 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;
exemplo:
#nginx.conf
location /foo {
# garantir que client_max_body_size == client_body_buffer_size
client_max_body_size 100k;
client_body_buffer_size 100k;
set_form_input $data; # lê o campo "data" em $data
set_form_input $foo foo; # lê o campo "foo" em $foo
}
location /bar {
# garantir que client_max_body_size == client_body_buffer_size
client_max_body_size 1m;
client_body_buffer_size 1m;
set_form_input_multi $data; # lê todos os campos "data" em $data
set_form_input_multi $foo data; # lê todos os campos "data" em $foo
array_join ' ' $data; # agora $data é uma string
array_join ' ' $foo; # agora $foo é uma string
}
Limitações
- ngx_form_input descartará corpos de requisição que estão armazenados em arquivos de disco. Quando a configuração client_max_body_size é maior que client_body_buffer_size, corpos de requisição que são maiores que client_body_buffer_size (mas não maiores que client_max_body_size) serão armazenados em arquivos de disco. Portanto, é importante garantir que essas duas configurações tenham os mesmos valores para evitar confusão.
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-form-input.