Caddy模块将gRPC-Web请求转换为服务器的正常gRPC请求

300 阅读1分钟

Caddy的gRPC-Web桥

该模块实现了从gRPC-Web客户端到gRPC服务器的桥梁。它类似于Envoy的envoy.filters.http.grpc_web 过滤器。它是试验性的,可能会有变化。

要将gRPC-Web请求转换为gRPC,只需将grpc_web 处理程序添加到你的HTTP路由。它应该放在你的reverse_proxy 或任何其他期望gRPC请求的处理程序之前。

例子

Caddyfile:

{
	order grpc_web before reverse_proxy
}

:5452 {
	grpc_web
	reverse_proxy h2c://127.0.0.1:50051
}

JSON:

{
	"apps": {
		"http": {
			"servers": {
				"srv0": {
					"listen": [
						":5452"
					],
					"routes": [
						{
							"handle": [
								{
									"handler": "grpc_web"
								},
								{
									"handler": "reverse_proxy",
									"transport": {
										"protocol": "http",
										"versions": [
											"h2c",
											"2"
										]
									},
									"upstreams": [
										{
											"dial": "127.0.0.1:50051"
										}
									]
								}
							]
						}
					]
				}
			}
		}
	}
}
	

你也可以将websocket_ping 参数指定为间隔值>=1s,以便启用websocket keep-alive pings。