You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法从Vercel Edge Runtime访问Google Cloud VM API的问题求助

问题排查与解决方案

可能原因及对应排查步骤

1. API应用层的访问控制限制

GCP外部防火墙开放0.0.0.0/0不代表API服务本身没有访问限制:

  • 登录VM查看API服务的访问日志,确认Vercel的请求是否到达服务端,以及日志中记录的403触发原因(比如IP被拦截、缺少特定请求头)。
  • 在API服务中添加日志打印所有请求头,对比本地请求与Vercel请求的头信息差异,检查是否存在服务端要求的头字段(如Host、Referer)未被Vercel携带的情况。

2. Vercel Edge Runtime的出站端口限制

Vercel Edge Runtime默认仅允许访问标准端口(80、443)及少数特定端口(587、465等),非标准端口(如9090)可能被拦截:

  • 临时将API服务切换到80或443端口,重新部署后测试Vercel调用是否正常。
  • 若必须使用9090端口,可通过vercel.json配置出站规则(注:部分自定义规则仅适用于付费计划)。

3. VM本地防火墙拦截

GCP外部防火墙规则不覆盖VM内部的防火墙配置:

  • 登录VM执行ufw status或iptables -L,检查本地防火墙是否拦截了9090端口的入站请求。
  • 若存在限制,执行ufw allow 9090添加允许规则。

4. GCP额外安全服务拦截

GCP Cloud Armor或其他安全策略可能对非标准端口请求进行拦截:

  • 检查VM是否关联了Cloud Armor策略,确认策略是否允许9090端口的请求。
  • 临时关闭Cloud Armor策略(仅用于测试),验证请求是否恢复正常。

快速验证方法

  • 在Vercel Edge函数中添加测试代码,验证对公开非标准端口服务的访问能力:
export default async function handler(req) {
  try {
    const res = await fetch('http://public-test-service:8080');
    return new Response(JSON.stringify({ status: res.status }), { status: 200 });
  } catch (e) {
    return new Response(JSON.stringify({ error: e.message }), { status: 500 });
  }
}
  • 获取Vercel Edge Runtime的出站IP,将其添加到API服务的IP白名单中,测试是否解决403问题。

内容的提问来源于stack exchange,提问作者Louis Beaumont

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 18:22:57