cloudfront(CDN)配置websocket协议详解

此次主要给大家带来的是cloudfront与websocket协议的结合,经过我cloudfront单个账号的免费额度是1T,基本上可以满足使用。AWS的实力不用质疑,本人实际测试下来,延时、速度等等指标都是很惊艳的。

一、背景介绍

官方文档:https://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/distribution-working-with.websockets.html

CloudFront 本身全局支持 WebSocket 连接,无需额外配置。我们配置的CloudFront 分配都具有内置 WebSocket 协议支持。

但是,需要注意补充一个配置,在源请求策略中添加如下标头:

  • Sec-WebSocket-Key

  • Sec-WebSocket-Version

  • Sec-WebSocket-Protocol

  • Sec-WebSocket-Accept

  • Sec-WebSocket-Extensions

从而避免在使用 WebSocket 时出现与压缩相关的意外问题。

二、具体的操作(重点讲特殊的部分,其余的配置,可以查看文末,博主之前写的详细流程)

首先做好需要加速网站(源站)的配置,并进行测试,确保源站的websocket路径可以正常连接、接收访问。这一步很重要,假如源站就有问题,我们后期定位问题会很麻烦。因此,在配置之前,请务必做好源站服务状态的确认。

2.1 配置源站

输入域名以及端口,cloudfront支持非标端口,也就是可以借助cloudfront将非标端口转化为80 443。

2.2 行为配置,其中源请求策略,需要独立创建。

2.3 其余的配置过程参考:

https://watermelonwater.tech/%e5%9f%ba%e4%ba%8eaws-cloudfront%e5%ae%8c%e6%88%90%e5%85%a8%e7%ab%99%e9%9d%99%e6%80%81%e8%b5%84%e6%ba%90cdn%e5%8a%a0%e9%80%9f/

本文关联的错误代码:

failed to accept conn | websocket failed to handshake

failed to accept conn | not a valid websocket handshake

当发生错误时,首先检查源站状态,如源站访问正常,建议参考本文,进行配置的详细检查,祝配置顺遂。