set_form_input

在 NGINX 中将指定表单字段的值设置为来自 HTTP POST 和 PUT 请求的内容。

语法set_form_input $variable [argument];
默认值none
上下文http, server, location
参数1-2

说明

set_form_input 指令是 NGINX 表单输入模块的一部分,该模块处理 HTTP 请求中 application/x-www-form-urlencoded 内容类型。该指令允许用户将请求体中发送的表单字段的值直接捕获到变量中以便进一步处理。它最多可以使用两个参数;第一个是要赋值的变量,可选的第二个参数是要提取的具体表单字段名。如果未指定字段名,则会将整个请求体内容读入到所述变量中。\n\n该指令可以在包括 httpserverlocation 在内的多个上下文中配置。调用时,NGINX 会在收到匹配的请求后解析请求体,前提是请求方法为 POST 或 PUT。set_form_input_multi 变体允许捕获同一字段的多个值,并将它们以类似数组的结构存储,这些值可以被像 array_join 这样的其他指令进一步处理。需要通过类似 client_max_body_sizeclient_body_buffer_size 的指令小心管理请求体大小,以避免输入数据被截断。\n\n总之,set_form_input 不仅有助于用请求数据填充变量,还使开发者能够高效地创建动态和交互式的 Web 应用。该指令与其他配置指令的交互可以显著增强 NGINX 作为 Web 服务器在处理动态表单和用户输入方面的能力。

配置示例

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

确保为 client_max_body_sizeclient_body_buffer_size 设置适当的限制,以避免请求被丢弃。

始终定义变量以正确捕获数据;否则可能导致值为空。

在错误的上下文中使用它(例如 if 块)可能导致不可预期的行为。仅在 location 或更高的上下文中使用。

← 返回所有指令