【杂项】内网穿透

  • 1413 字

### 临时测试:Quick Tunnel

先确保服务已启动:

make dev

另开一个终端:

cloudflared tunnel –url http://127.0.0.1:10002

启动成功后会显示类似:

https://random-name.trycloudflare.com

Cloudflare Quick Tunnel 会生成随机 trycloudflare.com 地址,仅适合开发测试,每次重启地址可能改变。Cloudflare Quick Tunnel 文档 (https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/do-more-with-tunnels/trycloudflare/)

把 .env 改为:

ALIPAY_NOTIFY_URL=https://random-name.trycloudflare.com/api/pay/notify/alipay

然后重启服务,使 payment-rpc 重新加载配置:

make dev-stop make dev

cloudflared 所在的终端不要关闭。

### 验证隧道是否通畅

执行:

curl -i -X POST
‘https://random-name.trycloudflare.com/api/pay/notify/alipay’
-H ‘Content-Type: application/x-www-form-urlencoded’
-d ‘test=1’

预期:

HTTP/2 200 failure

返回 failure 是正确的,因为测试参数没有支付宝签名。它证明:

公网 Cloudflare → 本机 app:10002 → /api/pay/notify/alipay → payment-rpc

整条网络链路已经通了。

常见错误:

  • 404:回调路径写错,必须是 /api/pay/notify/alipay
  • 502 Bad Gateway:本地 10002 没启动
  • Cloudflare 1033:隧道进程已停止
  • 一直没有支付宝回调:修改 .env 后没有重启 payment-rpc,或者二维码是在配置新地址之前创建的

配置完成后,最好重新发起一笔新的支付宝沙箱预下单,再扫码支付。

### 如果 Quick Tunnel 启动失败

如果提示存在 ~/.cloudflared/config.yml,Quick Tunnel 可能与已有配置冲突;Cloudflare 官方也说明 Quick Tunnel 不支持同时存在该配置文件。可以使用一个临时空配置,或者改用已有的命名 Tunnel。

如果你已有固定域名,长期使用应配置命名 Tunnel,将例如:

pay.example.com

指向:

http://127.0.0.1:10002

最终回调地址就是:

ALIPAY_NOTIFY_URL=https://pay.example.com/api/pay/notify/alipay

生产环境建议用固定命名 Tunnel;Quick Tunnel 只用于本地支付宝沙箱联调。

赞助喵
非常感谢您的喜欢!
赞助喵