Squid 看到的是 HTTP Upgrade 请求,还是仅仅一条承载加密流量的隧道?这决定了它的 HTTP Upgrade 控制能否解决故障。

普通显式代理路径Squid 所遇到的情况
wss://通常先 CONNECT,随后是由目标 TLS 承载的 WebSocket 握手
ws://代理可以处理的明文 HTTP Upgrade 请求

Squid 的升级控制针对的是它自己处理的请求。它无法在普通的不透明 WSS 隧道中看到加密的 HTTP 头。TLS 拦截或其他特殊的代理处理会改变可见性,并可能带来自身的兼容性要求。

对于 WSS,先定位流程在哪里停下:连接代理、接受 CONNECT、验证 TLS,然后是应用层握手。TLS 之前的拒绝与被拒绝的明文 Upgrade 请求是两种不同的故障。

如果需要修改升级策略,请使用所安装 Squid 版本对应的指令,并只针对所需行为放行。放行所有升级协议会把策略扩大到该应用之外。

HTTPS 页面请求成功只说明路径的一部分可用。即使是同一个主机名,长连接 WebSocket 流量仍可能因应用要求、连接寿命或中间设备限制而失败。

相关文章