postgres_pass

Директива `postgres_pass` задаёт имя upstream-сервера для обработки подключений к базе данных в модуле PostgreSQL для NGINX.

Синтаксисpostgres_pass upstream;
По умолчаниюnone
Контекстlocation, if in location
Аргументы1

Описание

Директива postgres_pass — это важный компонент модуля PostgreSQL для NGINX, который позволяет NGINX пересылать запросы на указанные upstream PostgreSQL серверы. Эта директива используется в контекстах location и if in location и помогает определить, какой backend должен обрабатывать входящие запросы к базе данных. Аргументом этой директивы должно быть имя блока upstream, определённого с помощью директивы postgres_server, который содержит такие данные, как IP сервера, имя базы данных, учётные данные пользователя и параметры подключения. Это обеспечивает бесшовную маршрутизацию запросов к базе данных к правильному серверу в соответствии с потребностями приложения.\n\nПри настройке директивы postgres_pass она может принимать в качестве аргумента имя переменной, что даёт гибкость в динамическом определении upstream-сервера. Это может быть особенно полезно в сценариях, где приложению необходимо взаимодействовать с разными базами данных в зависимости от содержимого запроса или других факторов времени выполнения. Связывая логику обработки запроса с определением upstream, NGINX может эффективно управлять взаимодействием с базой данных, обеспечивая правильное распределение нагрузки и возможности отказоустойчивости между несколькими серверами PostgreSQL, если это настроено. Кроме того, поскольку она работает в определённом контексте, вы можете комбинировать её с другими директивами, такими как postgres_query, чтобы создавать более сложные схемы взаимодействия с базой данных.

Пример конфига

location /database {
    postgres_pass backend_db;
    postgres_query SELECT * FROM users WHERE id = $arg_id;
}

Убедитесь, что указанный блок upstream существует; в противном случае NGINX не сможет перенаправлять запросы и вернёт ошибку.

При использовании переменных в postgres_pass убедитесь, что они разрешаются в допустимые имена upstream, чтобы избежать ошибок во время выполнения.

Не размещайте postgres_pass вне определённого контекста; он действителен только внутри location или в блоках location.

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