求助:使用ngrok v3暴露前后端服务时获相同公网URL的问题
解决ngrok v3免费版多隧道URL重复问题
首先明确:你遇到的是ngrok免费版的核心限制——免费账户同一时间只能运行1个活跃隧道。不管你用两个独立命令启动,还是通过配置文件--all启动,实际只有一个隧道在正常工作,另一个会复用同一个公网URL,导致两个服务无法同时访问。
临时解决办法:路径转发共享单URL
如果不想升级付费版,可以通过ngrok的路径转发功能,把同一个公网URL的不同路径映射到本地两个端口。
- 创建
ngrok.yml配置文件:
version: "3" tunnels: frontend: proto: http addr: 5173 host_header: rewrite path: "/frontend" backend: proto: http addr: 8000 host_header: rewrite path: "/backend"
- 启动命令:
ngrok start --all
- 配套调整:
- Vite前端项目需在
vite.config.js中设置base: '/frontend',确保资源路径正确 - FastAPI后端可通过
APIRouter(prefix="/backend")统一添加路径前缀,前端API请求对应改为/backend/xxx - 后端需配置跨域规则,允许该公网URL的访问
- Vite前端项目需在
长期解决办法:升级付费版
如果需要两个独立的公网URL,直接升级到ngrok的Basic及以上付费账户,支持同时运行多个独立隧道:
- 执行两个独立命令
ngrok http 5173和ngrok http 8000,会生成两个不同的公网地址 - 配置文件启动时,给每个隧道指定唯一名称,启动后每个隧道对应独立URL
内容的提问来源于stack exchange,提问作者Ashal Ibrahim
相关产品推荐
相关产品推荐

