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

如何限制可访问Azure OpenAI的域名?Next.js+Vercel场景实操

限制Azure OpenAI仅允许Vercel部署的Next.js域名访问的实现方法

一、Azure OpenAI服务端配置域名白名单

这是核心的访问限制手段,直接在Azure层面拦截非指定域名的请求:

  • 登录Azure门户,找到你的OpenAI资源实例
  • 进入「网络」选项卡,选择「允许从特定虚拟网络和IP地址访问」
  • 切换到「防火墙」板块,点击「添加规则」,选择「添加FQDN(完全限定域名)」
  • 输入你Vercel部署的域名(比如your-app.vercel.app,如果绑定了自定义域名就填自定义域名),完成后保存规则
  • 注意:Vercel的服务器IP是动态变化的,用FQDN白名单比IP白名单更可靠,无需频繁更新IP列表

二、Next.js端彻底避免前端暴露密钥

哪怕有Azure的域名限制,也绝对不要在前端代码里直接携带API密钥,通过Next.js的API路由做中间层转发:

  1. 配置Vercel环境变量
    进入Vercel项目的「设置→环境变量」,添加以下变量:

    • AZURE_OPENAI_API_KEY:你的Azure OpenAI密钥
    • AZURE_OPENAI_ENDPOINT:你的Azure OpenAI服务端点(比如https://your-resource.openai.azure.com/)
  2. 创建API路由转发请求

    • 如果你用App Router,在app/api/openai/route.js创建文件;用Pages Router则在pages/api/openai.js创建
    • 示例代码(App Router):
      import { NextResponse } from 'next/server';
      
      export async function POST(request) {
        const requestBody = await request.json();
        try {
          // 替换成你的部署名称和API版本
          const azureApiUrl = `${process.env.AZURE_OPENAI_ENDPOINT}/openai/deployments/gpt-35-turbo/chat/completions?api-version=2024-02-15-preview`;
          
          const response = await fetch(azureApiUrl, {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json',
              'api-key': process.env.AZURE_OPENAI_API_KEY,
            },
            body: JSON.stringify(requestBody),
          });
      
          const data = await response.json();
          return NextResponse.json(data);
        } catch (error) {
          return NextResponse.json({ error: error.message }, { status: 500 });
        }
      }
      
    • 前端代码只需要调用这个API路由(比如/api/openai),完全不需要接触Azure的密钥
  3. 可选:API路由额外校验
    可以在API路由里添加请求来源校验,进一步加固:

    // 在POST方法开头添加
    const origin = request.headers.get('origin');
    const allowedOrigins = ['https://your-app.vercel.app', 'https://your-custom-domain.com'];
    if (!allowedOrigins.includes(origin)) {
      return NextResponse.json({ error: 'Not allowed' }, { status: 403 });
    }
    

三、Vercel端辅助配置(可选)

  • 如果使用自定义域名,确保在Vercel完成域名绑定并开启HTTPS
  • 可在Vercel「设置→安全」中开启「IP访问控制」,限制仅指定IP能修改项目配置,防止环境变量泄露

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 17:52:57