操作环境: Debian 11 x86_64
在Cloudflare Tunnel支持gRPC的issue提出一年后,
Cloudflare边缘总算是能够通过Tunnel连接到源站的gRPC服务了。
从现在开始,你已经可以将哪吒监控面板完整的隐藏于Cloudflare Tunnel之中。
设置方法如下:
-
指定Cloudflare Tunnel的传输协议为
http2
对于直接通过官网service install一键安装的用户,
需要在systemd配置中增加--protocol http2
参数nano /etc/systemd/system/cloudflared.service #找到并修改启动命令 ExecStart=/usr/bin/cloudflared --no-autoupdate tunnel run --protocol http2 --token 你的Token #完成修改后刷新配置并重启服务 systemctl daemon-reload systemctl restart cloudflared
-
在Cloudflare面板中配置http2回源选项
- 你的服务必须使用https协议
- 启用
HTTP2 connection
选项 - 如果
Service URL
使用localhost
,则需要正确填写HTTP Host Header
与Origin Server Name
-
完成上述两部的配置后
发送至Cloudflare边缘的gRPC流量应该能够正确的路由至你的Tunnel端点 -
哪吒面板xCloudflare的完整配置
- 我使用Nginx Proxy Manager为哪吒面板的gRPC服务提供https终结
- Websocket与静态资源直接通过Tunnel连接至Dashboard
- gRPC使用不同的域名进行连接
gRPC反向代理使用的自定义配置如下
# 30002端口为gRPC使用的端口 underscores_in_headers on; location / { grpc_read_timeout 300s; grpc_send_timeout 300s; grpc_pass grpc://localhost:30002; }
注意反向代理配置完成后,Cloudflare Tunnel应如前述步骤所示连接到nginx监听的https端口