渠道后台的通知记录整页都是 403,最后一条写着连接被拒绝。服务器 access.log 里根本没有这个路径的请求记录。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,安全组只放开了 80 和 443,回调走的是另起的 8081 端口;面板自带的 WAF 又把带 notify 关键字的 POST 当成扫描拦掉。请求在到达应用之前就被丢掉。

「回调地址被拦截」相关的日志我一般连着看前后五分钟,单看一条报错经常判断不出是哪一步失败。改完顺手把文档补一句,省得下次自己重新推一遍。

curl -i -X POST https://shop.example.com/pay/notify \
  -H 'Content-Type: application/json' \
  -d '{"trade_no":"test"}'
# 期望 200 或 400,不能是 403

监控和日志的时间要对上,时区不一致会多绕很大一圈。

具体做法是,先确认回调域名解析到哪台机器、走哪个端口,安全组按端口放行;把回调路径加入 WAF 白名单,只对这个路径关掉 POST 拦截规则,别整体关闭;放行后从外网发一条空报文,应用日志里能看到记录才算通。

最后用这个标准收尾,渠道后台重发通知后状态变成成功,access.log 里能看到这条 POST 和返回码。

作者 9823189