# ============================================================ # Nginx gRPC 代理配置示例 # ============================================================ # # 功能说明: # - gRPC 协议代理(HTTP/2) # - 流式 RPC 支持 # - 负载均衡 # # Lolly 对应配置: # server: # ssl: # http2: # enabled: true # proxy: # - path: "/grpc" # targets: # - url: "grpc://grpc-server:50051" # # gRPC 需要 HTTP/2 支持 # ============================================================ upstream grpc_backend { server grpc1:50051; server grpc2:50051; keepalive 32; } server { listen 443 ssl http2; server_name grpc.example.com; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; ssl_protocols TLSv1.2 TLSv1.3; # gRPC 代理 location /grpc { # gRPC 使用 HTTP/2 # Lolly 对应: grpc:// 协议前缀 grpc_pass grpc://grpc_backend; # gRPC 超时 grpc_read_timeout 60s; grpc_send_timeout 60s; grpc_connect_timeout 5s; # gRPC 缓冲 grpc_buffer_size 4k; } # gRPC Web 代理(浏览器访问 gRPC) # 需要 grpc-web 模块或第三方代理 location /grpcweb { grpc_pass grpc://grpc_backend; # gRPC Web 特殊处理 grpc_set_header X-Grpc-Web 1; } } # gRPC 代理说明: # # 1. gRPC 协议: # - 基于 HTTP/2 # - 支持 Unary、Server Streaming、Client Streaming、Bidirectional Streaming # - 使用 Protobuf 序列化 # # 2. nginx grpc_pass 指令: # - grpc:// - 明文 gRPC(HTTP/2 无 TLS) # - grpcs:// - 加密 gRPC(HTTP/2 + TLS) # - 自动处理 HTTP/2 framing # # 3. Lolly 支持: # - HTTP/2 需要启用 SSL # - gRPC 代理通过 HTTP/2 协议实现 # - 支持流式 RPC # # 4. 超时配置: # - grpc_read_timeout: 等待响应超时 # - grpc_send_timeout: 发送请求超时 # - 流式 RPC 需要较长超时 # # 5. 负载均衡: # - gRPC 支持标准 HTTP/2 负载均衡 # - 建议 least_conn 或 round_robin