Cloudflare Argo Tunnel 實測改善 Response Time
什麼是 Argo Tunnel
Argo Tunnel 是一個由 Cloudflare 提供的服務,這個服務主要是用來協助網站開發者避開壅塞的網際網路,而是轉由 Cloudflare 的 Datacenter 之間的線路進行資料遞送,這樣就可以大大的減少網站的 Response Time。
另外,因為透過 Argo Tunnel 遞送內容之後,主機將不用再額外開 Port 來接收外部請求,而是透過一個加密的 Tunnel 與 Cloudflare 建立連線,更可以避免暴露 IP 及 Port 多一層安全。
安裝 Argo Tunnel
安裝 cloudflared
在這個連結: cloudflared downloads 中,有安裝 cloudflared 的流程,已 Linux Ubuntu 為例,首先下載.deb amd64/x86-84
版本,接著:
~$ sudo dkpg -i cloudflared-stable-linux-amd64.deb
登入 Argo Tunnel
~$ cloudflared tunnel login
A browser window should have opened at the following URL:
https://dash.cloudflare.com/argotunnel?callback=https%3A%2F%2Flogin.cloudflarewarp.com%...
這裡會拿到一個 URL,因為 Server 上沒有瀏覽器,在這裡需要將這個網址複製到自己的電腦中開啟。
開啟之後就會出現這一個頁面:
因為我待會需要用argo.floatflower.me
作為我對外的網址,因此我就選floatflower.me
。
接著就會看到 terminal 顯示:
Leave cloudflared running to download the cert automatically.
You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/root/.cloudflared/cert.pem
這個指令的結果將會在~/.cloudflared
底下生成一個cert.pem
。
開啟 Argo Tunnel
~$ cloudflared --hostname argo.floatflower.me http://localhost:80
這個指令就是將 localhost:80 與 cloudflare 建立一個 Tunnel,接著我們就可以透過https://argo.floatflower.me
,這樣就完成了。
注意:
在這裡使用 http://localhost:80 是為了比較有開 argo tunnel 和沒開 argo tunnel 的 Response Time,因此對應上的 Port 80,而 Cloudflare 官方推薦是將網站開在 Port 8080 並將所有對外的 Port 全部關閉。
結果
我們透過 Bitcatcha 這個服務來協助我們測試網站的 Response Time,首先我們有兩個網站:
- non-argo.floatflower.me (直接透過 DNS 指向網站伺服器 IP)
- argo.floatflower.me (透過 Argo Tunnel 建立連線)
non-argo.floatflower.me
在沒有 Argo Tunnel 的狀況下,直接將 DNS 指向放在 Digital Ocean 新加坡機房的主機 IP,得到的 Response Time 除了在新加坡之外,大部份地區都非常的慘烈,尤其是 Sal Paulo 以及 US。
argo.floatflower.me
加上 Argo 之後,會發現連 IP 都變了,因為實際上這個 IP 是 Cloudflare 的 IP。加上之後,所有的反應時間都變得非常得快,本來 330ms 的 Sao Paulo 也減低到了剩下 5ms,這個成果非常令人滿意。