Caddy域名配置與QUIC協議
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,重啟瀏覽器。
運行www.flowerfireegoo.com
從上圖中可以看出訪問域名的時候,服務器走的是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協議:
Caddy域名配置與QUIC協議