grpc_pass
grpc_pass 指令用于将 gRPC 请求转发到 gRPC 后端服务器。 — NGINX HTTP Core
说明
`grpc_pass` 指令专门用于在 NGINX 内路由 gRPC 请求。它定义了一个后端服务器,gRPC 请求会被转发到该服务器。该指令以 URL 作为参数,该 URL 可以指定由 `upstream` 指令定义的上游服务器组或直接的服务器地址。当 NGINX 收到 gRPC 请求时,它会将该请求转换为适当的格式并转发到指定的后端,同时处理 gRPC 通信所需的二进制协议。 在 NGINX 配置的上下文中,`grpc_pass` 指令用于 `location` 块,使其在定义应映射到特定后端服务的 URI 区段时至关重要。响应头的正确处理、连接管理以及二进制的编码/解码机制由 NGINX 自动管理,开发者可以专注于应用逻辑而不是 gRPC 通信的细节。重要的是要确保上游服务器支持 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_pass 正确处理 gRPC。
不要将 grpc_pass 与修改 HTTP 协议的指令一起使用,例如用于 HTTP/1.x 的 proxy_set_header,因为这可能导致协议不匹配。
在指定后端 URL 时,确保以 'grpc://' 或 'grpcs://' 开头以指明正确的协议。在定义 grpc_pass 指令后,其他配置(例如超时)也可能需要相应设置。