postgres_query

`postgres_query` 指令定义了要针对 PostgreSQL 数据库执行的 SQL 查询,可能根据指定的 HTTP 方法有条件地执行。

语法postgres_query [methods] query;
默认值none
上下文http, server, location, if in location
参数1+

说明

postgres_query 指令在 NGINX PostgreSQL 模块中允许用户指定将在接收到的 HTTP 请求时执行的 SQL 查询。它可以接受一个或多个方法作为其参数,以指定查询应在哪些 HTTP 方法下应用。此灵活性使用户能够根据请求类型定制数据库操作,从而优化与 PostgreSQL 后端的交互。

查询本身可以包含变量,增强其动态性,允许从请求上下文或环境中获取数据。当在相同配置上下文(例如 httpserverlocation)中多次使用该指令时,可以为不同场景定义多个查询,从而根据传入请求的具体情况执行复杂的数据库操作。如果指定了方法,则关联的查询仅在该方法下执行;如果未指定方法,则查询适用于所有请求。

与其他 NGINX 指令一样,正确的语法和上下文使用对于确保预期行为至关重要。格式不正确或包含无法识别语法的查询可能导致服务器错误或产生意外响应,从而可能引发服务中断。

配置示例

location /api/data {
    postgres_pass my_upstream;
    postgres_query GET SELECT * FROM users WHERE id = $arg_id;
    postgres_query POST INSERT INTO users (name) VALUES ($arg_name);
}

使用不受支持的 SQL 查询可能导致服务器错误;请确保 SQL 语法与 PostgreSQL 兼容。

由于 NGINX 按顺序处理指令,postgres_query 指令的顺序可能会影响针对特定请求方法执行的是哪个查询。

在查询中不当使用变量可能导致意外结果或错误。

← 返回所有指令