最近HTTP-over-QUIC 协议被正式命名为 HTTP/3,协议带来的最大改变是协议底层将采用UDP协议,而再也不是TCP协议,这样的好处吗,就是更低时延,更好的拥塞控制,更精确的RTT时间,更高效率的多路复用...谷歌万岁,要知道现有的http/2(spdy)协议也是源于谷歌。node
这么多的好处,还等什么,开搞。ios
boxopened总体基于的nodejs开发,经过nginx反代对外提供服务,以前经过配置,boxopened已经支持了http/2协议,可是目前nginx还不支持quic协议,因而只能想别的办法。通过一番谷歌(再次感谢伟大的谷歌)之后,发现了Caddy,一个新一代的web 服务器。caddy的官网:caddyserver.com/ 。caddy宣称是比nginx更人性化的web server,基于go语言开发,简单易用的配置,原生的http/2支持,自动的https证书管理....nginx
caddy的部署有不少方式,因为boxopened总体是基于docker化的部署,因此这里caddy的部署也是基于docker部署的,好在官方提供了docker镜像(这里给caddy点个赞)。接下来就是配置了,官方文档写的简单又清楚,一看就懂。目前对quic的支持还处于实验性质,因此要开启quic,要加上-quic 标志。web
下面是docker-compose.yml 中caddy服务的配置,你们能够参考下。chrome
caddy:
image: abiosoft/caddy:0.11.1
ports:
- 80:80
- 443:443
- 80:80/udp
- 443:443/udp
volumes:
- ../../boxopened-config/caddy/www:/srv
- ../../boxopened-config/caddy/ssl:/root/.caddy
- ../../boxopened-config/caddy/logs:/wwwlogs
- ../../boxopened-config/caddy/conf/Caddyfile:/etc/Caddyfile
command: ["--conf", "/etc/Caddyfile", "--log", "stdout", "--agree", "--quic"]
复制代码
caddyfile 配置docker
http://boxopened.com {
redir 301 {
/ https://www.boxopened.com{uri}
}
}
http://www.boxopened.com {
redir 301 {
/ https://{host}{uri}
}
}
https://www.boxopened.com {
gzip
log /wwwlogs/portal.access.log
tls /root/.caddy/fullchain.pem /root/.caddy/privkey.pem
proxy / portal:6001 {
transparent
}
}
复制代码
就这么几行配置,完事儿,简单吧!bash
再给你们说说我中间遇到的坑,首先quic协议的底层是基于udp协议的,因此在进行docker端口配置的时候,要expose相应的udp端口,而且打开主机的防火墙配置。。。(我能说我在这上面搞到凌晨三点么。。。)服务器
全部的一切完成后,我觉得一切都ok了,又发现怎么都没法进行quic链接,反复尝试仍是不行。原来chrome只支持最新的quic协议,因此更新了下caddy的版本,一些搞定!ui
最后展现下效果 spa
想更直观的感觉下,请戳 boxopened.com