这个坑值得记一笔。在阿里云香港节点上用 xai 0.1 的 SDK 调 grok-2-1212,返回 403,原文 The model is not available in your region,同一 key 在本机 Mac 上能通,服务部署在容器里。

刚开始盯着「HTTP 代理把请求转到了第三方节点」,折腾了半个多小时,排掉了。

真正麻烦的地方在于,几个原因的现象几乎一样。容器出口 IP 落在不支持的地区;云厂商的 NAT 网关把流量从别的区域送出;账号注册地与实际调用地不一致,触发风控。

上来先看容器实际出口 IP 的归属地

curl -s https://ipinfo.io/json | jq '{ip,country,region}'

接着绕开代理直连再试一次

curl -s -x "" https://api.x.ai/v1/models -H "Authorization: Bearer $XAI_KEY" -o /dev/null -w '%{http_code}\n'

随后检查环境变量里有没有代理残留

Get-ChildItem Env: | Where-Object {$_.Name -match 'PROXY'}

末了把出口换成支持地区的固定 IP 后复验

curl -s https://api.x.ai/v1/chat/completions -H "Authorization: Bearer $XAI_KEY" -d '{"model":"grok-2-1212","messages":[{"role":"user","content":"hi"}],"max_tokens":16}'

这类改动我都写进变更记录,过两周再出问题时能对上号。

改完先别撤,确认这几项。返回 200,响应体里 model 是 grok-2-1212,出口 IP 的国家与账号支持列表一致。

补一句。403 不一定是 key 的问题,云主机的出口 IP 经常和实例所在地不是一回事。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189