讓子彈飛,零成本上你的網站更快一點,boxopened http/3 (QUIC) 協議實戰

最近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

TIM截圖20181127124452.png

想更直觀的感覺下,請戳 boxopened.com

相關文章
相關標籤/搜索