postgres_query

Директива `postgres_query` определяет SQL-запрос, который будет выполнен против базы данных PostgreSQL, возможно условно в зависимости от указанных методов HTTP.

Синтаксисpostgres_query [methods] query;
По умолчаниюnone
Контекстhttp, server, location, if in location
Аргументы1+

Описание

Директива postgres_query в модуле NGINX для PostgreSQL позволяет задать SQL-запросы, которые будут выполняться в ответ на входящие HTTP-запросы. Она может принимать один или несколько методов в качестве параметра, указывая, при каких методах HTTP запросы должны применяться. Такая гибкость позволяет пользователям адаптировать операции с базой данных в зависимости от типа поступившего запроса, оптимизируя взаимодействие с бэкендом PostgreSQL.

Сам запрос может содержать переменные, что повышает его динамичность и позволяет получать данные из контекста запроса или окружения. Когда эта директива используется несколько раз в одном и том же контексте конфигурации (например, http, server или location), можно определить несколько запросов для различных сценариев, что позволяет реализовывать сложные операции с базой данных в зависимости от конкретики входящего запроса. Если указан метод, связанный запрос будет выполняться только для этого метода; если метод не указан, запрос применяется ко всем запросам.

Как и для других директив 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.

Порядок директив postgres_query может повлиять на то, какой запрос будет выполнен для данного HTTP-метода, поскольку NGINX обрабатывает директивы последовательно.

Неправильное использование переменных в запросах может привести к неожиданным результатам или ошибкам.

← Ко всем директивам