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

Heroku部署Next.js+Prisma项目QuotaGuard静态IP代理配置异常问题

核心逻辑错误

你当前的配置方向完全搞反了:http-proxy-middleware 配置的是代理用户访问你Next应用的入站请求,但你需要的是代理Next服务端(Prisma)主动发起的到SQL Server的出站请求,这是两个完全不同的场景,所以才会出现首页变成代理返回内容、QuotaGuard没抓到数据库请求的问题。


排查解决步骤

1. 回滚错误的server.js配置

首先删掉你现在加的代理中间件,先保证Next应用本身的入站请求能正常响应,不要把用户请求往QuotaGuard发。修正后的server.js基础配置如下:

// server.js 修正后基础版本
const express = require('express')
const { parse } = require('url')
const next = require('next')
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()

app.prepare()
    .then(() => {
        const server = express()

        server.all('*', (req, res) => {
            const parsedUrl = parse(req.url, true)
            return handle(req, res, parsedUrl)
        })

        server.listen(process.env.PORT, (err) => {
            if (err) throw err
            console.log(`> Ready on http://localhost:${process.env.PORT}`)
        })
    })
    .catch((err) => {
        console.log('Error:::::', err)
    })

部署后先验证首页、非API路由可以正常访问,排除入站请求的问题。


2. 配置Prisma通过QuotaGuard代理发起数据库请求

Prisma是直接发起TCP连接到SQL Server,不属于HTTP请求,不能用HTTP代理中间件,需要给Prisma配置SOCKS代理走QuotaGuard的通道:

  1. 安装依赖
npm install socks-proxy-agent
  1. 解析QuotaGuard代理地址并配置Prisma
    QUOTAGUARDSTATIC_URL的格式为http://用户名:密码@代理主机:代理端口,你需要在Prisma初始化时解析该地址,绑定代理:
// prisma/client.js 示例
import { PrismaClient } from '@prisma/client'
import { SocksProxyAgent } from 'socks-proxy-agent'
import { parse } from 'url'

// 解析QuotaGuard地址参数
const qgUrl = parse(process.env.QUOTAGUARDSTATIC_URL)
const proxyHost = qgUrl.hostname
const proxyPort = qgUrl.port
const proxyAuth = qgUrl.auth

// 初始化socks代理agent
const agent = new SocksProxyAgent(`socks://${proxyAuth}@${proxyHost}:${proxyPort}`)

// 给Prisma配置使用代理连接数据库
const prisma = new PrismaClient({
  datasources: {
    db: {
      url: process.env.DATABASE_URL,
      config: {
        agent: agent
      }
    }
  }
})

export default prisma

3. 最终验证

  • 触发一次需要调用Prisma的API路由请求,查看QuotaGuard控制台是否有对应请求记录
  • 确认QuotaGuard提供的两个静态出口IP已经被添加到客户SQL Server的白名单中
  • 若仍有连接拒绝报错,优先检查代理地址解析是否正确、QuotaGuard服务授权是否正常

内容的提问来源于stack exchange,提问作者Al Sigman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:36:03