外人開 gym.joenyc.net / drop.joenyc.net
自架服務,經 Cloudflare Tunnel 入屋企
- DNS 查詢:hostname 喺 Cloudflare 係 proxied(橙雲)CNAME,指去 tunnel 嘅
<id>.cfargotunnel.com,所以 resolver 收到嘅係 Cloudflare 嘅 anycast IP,唔係屋企 IP。DNS - 連去 edge:瀏覽器同最近嘅 Cloudflare 機房(香港)做 TLS 握手,用 Cloudflare 簽發嘅 edge 憑證。TLS 1.3HTTP/2 · HTTP/3
- Edge 搵 tunnel:edge 睇 hostname 對上 tunnel「r3s」,揀一條 R3S 早已連好嘅連線,將成個 HTTP request 包落去。QUIC
- cloudflared 轉發:R3S 上嘅
cloudflared(--network host)按 ingress 規則轉去本機嘅 port。呢一段係純 HTTP,但只喺 R3S 本機 loopback 入面行。HTTP - 入 container:
opengym-web嘅 nginx 收到;再將 API 交去opengym-api(Compose bridge 網絡)。訪客真 IP 靠CF-Connecting-IPheader 帶落嚟。 - 原路返回:container → cloudflared → tunnel → edge → 瀏覽器。全程屋企冇開過入站 TCP port。