1:配置域名和服务器
因为要支持QUIC协议必须要有自己的域名和安全证书,因此需要有自己的域名服务器,首先自己购买一个域名,然后和阿里云公网之前申请的大陆服务器进行域名绑定,绑定后访问网页的时候显示没有备案,因为大陆的服务器和域名绑定的时候需要备案。备案过程很繁琐,大约需要20个工作日。
为了方便起见,购买了一周的香港服务器,香港服务器是不需要备案的。
首先将域名和香港服务器进行绑定和解析,如下图 所示:
绑定ip与域名后,显示如下:
在本例实例安全组中配置规则:
因为QUIC协议走UDP端口,因此规则中除了其他配置规则外,还需要配置UDP协议规则:如下图所示
2:服务器上部署Caddy
然后将caddy服务器部署到服务器上,并且让其在QUIC模式下运行。
其中Caddyfile配置如下和上一章讲到的配置一致,此处省略。
通过命令可以看到UDP端口处于开启状态,如果没有开启QUIC协议,UDP默认是不开启的,只开启TCP:
3:QUIC客户端支持
要在浏览器中运行QUIC协议,首先浏览器必须支持QUIC,目前支持QUIC的浏览器有chrome。
客户端开启QUIC:
在浏览器中运行chrome://flags,将Experimental QUIC protocal选项由default改为Enabled,重启浏览器。
从上图中可以看出访问域名的时候,服务器走的是caddy服务器。并且caddy默认提供安全证书。
除此之外,还必须让浏览器强制对于指定域名启用quic 协议。
在命令行输入如下命令:
chrome.exe --no-proxy-server --enable-quic --quic-host-whitelist="HOST" --origin-to-force-quic-on=HOST:PORT
4:wireshark抓包以及碰到的问题
下载抓包软件wireshark,重新运行网站,用wireshark进行抓包,并且过滤quic协议。
从上图中,可以看到并没有检测到quic请求。
在google浏览器中运行chrome://net-internals/#quic如下图所示:
可以看出google 62版本的浏览器支持的quic协议是39,但是caddy目前支持的最高QUIC协议版本是38,因此不兼容。
5:解决方案
解决方法:下载低版本的google。
因此我下了59版本的google,发现其支持caddy QUIC版本,通过命令行启动:
然后通过chrome://flags开启QUIC支持,重新开启服务器,在浏览器中运行www.flowerfireegoo.com。
浏览器打开chrome://net-internals/#quic,刷新网站,如下所示:
通过抓包软件,可以看到走的是QUIC协议: