scgi_pass

Директива `scgi_pass` пересылает запросы на SCGI-сервер.

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

Описание

Директива scgi_pass в NGINX используется для передачи запросов на SCGI (Simple Common Gateway Interface) бэкенд. Обычно она применяется для маршрутизации HTTP-запросов к веб‑приложениям, которые обмениваются данными по протоколу SCGI. Когда запрос совпадает с блоком location, где определена scgi_pass, NGINX формирует SCGI-запрос и пересылает входящие HTTP-данные на указанный SCGI-сервер.

С помощью scgi_pass возможны разные варианты конфигурации. Аргумент этой директивы — адрес SCGI-сервера, который можно задавать либо как IP-адрес и порт (например, 127.0.0.1:4000), либо как адрес Unix-сокета (например, unix:/var/run/scgi.sock). NGINX затем формирует SCGI-запрос в соответствии с требованиями указанного сервера, отправляя необходимые заголовки и поддерживая соединение до получения ответа или истечения времени ожидания запроса.

scgi_pass можно помещать внутри блоков location или даже внутри условных блоков if в этих location, что даёт гибкость в том, как маршрутизируются запросы на основе URI или других условий. Также часто его используют совместно с другими директивами для дополнительной функциональности, например для буферизации или установки таймаутов запроса.

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

location /app {
    scgi_pass 127.0.0.1:4000;
    include scgi_params;
}

Убедитесь, что SCGI-сервер запущен и доступен из NGINX.

Использование неправильного протокола (например, HTTP вместо SCGI) может привести к ошибкам в связи.

Если используются Unix sockets, убедитесь, что права доступа к сокету позволяют пользователю NGINX получить к нему доступ.

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