出于众所周知的原因,国内的ISP对基于UDP的QUIC协议不太友好,导致部署在本地、使用Cloudflare隧道提供外网访问的本站时不时无法访问。遇到相似问题的不只我一个,根据这个issue,新版的Cloudflare隧道“强制”使用QUIC进行连接。经过实测,在QUIC连接失败后需要超过5分钟才会fallback到HTTP2。于是参考官方文档配置cloudflared默认使用HTTP2连接。
说白了也很简单,假设已经通过systemd管理cloudflared了,那么找到cloudflared.service,编辑ExecStart=
一行:
ExecStart=/usr/bin/cloudflared --no-autoupdate --protocol http2 tunnel run --token <your_token>
当然想指定使用QUIC的话改成quic
就行。
稍微吐槽一下ISP的QoS,我访问博客上图片多一点的文章/上传照片时经常被掐,之前以为是被当作爬墙的误封了,后面翻日志发现凡是QUIC短时间内高强度使用必被QoS,现在改用HTTP2看看稳定性如何。顺便这个cloudflared断连后不返回错误,就一个劲埋头重试——还不一定成功,之前有几次还是朋友告诉我网站挂了才发现,重启cloudflared之后就恢复了。