把刚才那一长串 Cloudflare / Cloud Run 操作,用大白话 + 图讲清楚:每一步在干嘛、为什么非做不可、它们怎么环环相扣。
Kiln(那个游戏生成观测台)跑在 Google Cloud Run 上,它自带一个又长又难记的网址 kiln-platform-…run.app。我们想要的是三件事:
kiln.luddi.airun.app 网址不能变成谁捡到谁就能白嫖的口子(每次生成都花真金白银的 AI 费用)run.app 网址就像房子的后门。如果它对外开着,你前门装再好的锁也没用——别人绕后门就进来了。所以全部操作的本质就两句话:开一道带门禁的正门(kiln.luddi.ai),同时把后门(run.app)锁死。
先看"正常团队成员打开网页"这条路,后面每个操作都是为了让这条链路成立:
下面把这条链路上的每一个操作拆开讲——为什么要做它。
Cloud Run 同一台机器上可能跑很多服务,它靠请求里的 Host(你访问的域名)来分辨该把请求交给谁。它默认只认自己那个 run.app 网址。你直接拿 kiln.luddi.ai 去敲它,它一脸懵:"没这域名" → 返回 404。
域名映射就是去 Cloud Run 登记一句话:"kiln.luddi.ai 这个域名,请交给 Kiln 服务"。登记后它才认得。
你的银行.com 映射到我的钓鱼网站)。所以它要你先证明"luddi.ai 确实是你的"——往 luddi.ai 的 DNS 里加一条只有域名主人能加的 TXT 记录,Google 一查到,就信你了。这一步是一次性的。
📌 我们这步:`gcloud ... domain-mappings create` → Google 通过 Cloudflare 一键加 TXT 验证 → 映射建成,它回了一条要配的 DNS:kiln → ghs.googlehosted.com。
DNS 就是互联网的"通讯录":输入一个域名,它告诉浏览器该去哪个地址。我们加了一条记录:
kiln.luddi.ai 在哪、连都连不上。有了它,访问 kiln.luddi.ai 就会被引导到 Cloud Run(中间还会经过 Cloudflare,见下一节)。
Cloudflare 的每条 DNS 记录有个开关:灰云(DNS only)= 只做通讯录、流量不经过 Cloudflare;橙云(Proxied)= 流量先进 Cloudflare 再转发。这俩在我们这儿用途完全不同:
Cloud Run 要给 kiln.luddi.ai 申请一张 HTTPS 证书(否则浏览器会报"不安全")。申请时 Google 要通过公网 DNS 亲眼看到这个域名确实指向它自己,才肯签。灰云时公网看到的就是 ghs.googlehosted.com(Google 自己)→ 验得过、证书签得出。
如果一上来就橙云,公网看到的是 Cloudflare 的 IP,Google 验不了 → 证书永远卡住。
ERR_CONNECTION_CLOSED 就是),走 Cloudflare 中转才连得通——luddi.ai 本身就是这么做的。这是整件事的登录闸。我们给 kiln.luddi.ai 建了一个 Access Application,配了一条策略:只放行邮箱以 @hakko.ai 结尾的人(你也可以把自己的邮箱加进去)。
有人访问 kiln.luddi.ai → Cloudflare 先弹出登录页 → 输入邮箱、收验证码登录 → 邮箱符合策略才放进去。不符合的,连 Kiln 的门都摸不到就被 Cloudflare 拦下了。
Cf-Access-Jwt-Assertion 的请求头)。这个签名别人伪造不了——这正是下一步"锁后门"的钥匙。
光有正门还不够——别人还是可能直接敲那个 run.app 后门。所以 Kiln 应用自己也加了一道判断:每个进来的请求,必须满足下面之一,否则一律 401 拒绝。
run.app 的请求,没经过 Cloudflare,就没有那张签名通行证;除非它带着运维钥匙 ?key=,否则一律 401。于是:普通人走正门(邮箱登录),你/运维走后门(钥匙),其他人哪儿都进不去。
域名映射没有它 → Cloud Run 不认 kiln.luddi.ai → 404。(它是终点能收货的前提)
DNS 记录没有它 → 浏览器找不到 kiln.luddi.ai → 连不上。(它把名字指到入口)
先灰云没有它 → 证书签不出来 → 浏览器报不安全 / 连不上。(它让 HTTPS 成立)
后翻橙云没有它 → 国内访问不了 + 登录闸插不进。(它让"可访问"和"可拦截"同时成立)
Access 登录没有它 → 谁都能进。(它是正门的锁,并产出"通行证")
应用验通行证 + ?key没有它 → run.app 后门大开。(它把后门锁死)
所以这是一条环环相扣的链:DNS 把人引到 Cloudflare → Cloudflare 验人、盖通行证 → Cloud Run(靠域名映射)收下 → Kiln(靠验通行证)放行。任何一环缺了,要么连不上、要么不安全、要么没拦住。
✓ 正门:浏览器开 https://kiln.luddi.ai → 邮箱登录(@hakko.ai)→ 直接进,不用记钥匙。
✓ 后门(运维):直连 run.app/?key=… 仍可用,给你/运维不走登录时调试。
✓ 其他人:既没登录、又没钥匙 → 401,进不来。AI 费用不会被白嫖。
一个未来的小提醒:Cloud Run 的 HTTPS 证书续期需要再"验一次 DNS",长期橙云时,续期前可能要临时把 kiln 记录翻一下灰云、等续期完再翻回橙云。不影响现在使用。