grpc_pass

Директива grpc_pass используется для передачи gRPC-запросов на бэкенд-сервер. — NGINX HTTP Core

grpc_pass
locationif in location
Синтаксисgrpc_pass URL;
По умолчаниюnone
Контекстlocation, if in location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `grpc_pass` специально предназначена для маршрутизации gRPC-запросов внутри NGINX. Она определяет бэкенд-сервер, на который пересылаются gRPC-запросы. Директива принимает в качестве аргумента URL, который может указывать либо на группу upstream-серверов, определённую директивой `upstream`, либо на прямой адрес сервера. Когда NGINX получает gRPC-запрос, он преобразует этот запрос в необходимый формат и пересылает его указанному бэкенду, обрабатывая бинарный протокол, необходимый для gRPC-взаимодействия. В контексте конфигурации NGINX директива `grpc_pass` используется внутри блока `location`, что делает её необходимой для определения части URI, которая должна быть сопоставлена с конкретным бэкенд-сервисом. Корректная обработка заголовков ответа, управление соединениями и механизмы бинарного кодирования/декодирования автоматически выполняются NGINX, что позволяет разработчикам сосредоточиться на логике приложения, а не на тонкостях gRPC-взаимодействия. Важно убедиться, что upstream-сервер поддерживает gRPC и должным образом настроен для обработки запросов, пересылаемых из NGINX. Поскольку gRPC использует HTTP/2, директива `grpc_pass` по сути требует сборки NGINX с поддержкой HTTP/2. Это означает, что сервер должен быть правильно настроен на приём HTTP/2-соединений, что в сочетании с `grpc_pass` обеспечит полноценную поддержку gRPC-трафика.

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

location /gRPC {
    grpc_pass grpc://localhost:50051;
}

Убедитесь, что NGINX был собран с поддержкой HTTP/2, чтобы правильно обрабатывать gRPC с помощью grpc_pass.

Не используйте grpc_pass совместно с директивами, изменяющими HTTP-протокол, такими как proxy_set_header, предназначенными для HTTP/1.x, — это может привести к несоответствию протоколов.

При указании URL бэкенда убедитесь, что он начинается с 'grpc://' или 'grpcs://', чтобы обозначить правильный протокол. После определения директивы grpc_pass другие параметры конфигурации, такие как таймауты, также могут потребовать соответствующей настройки.