Nginx RTMP on_publish 未触发 Next.js 服务器上的 API 端点

问题描述 投票:0回答:1

我面临的问题是,Nginx 的 RTMP on_publish 指令似乎无法触发托管在 Next.js 服务器 (Vercel) 上的 API 端点,尽管端点可以通过 Postman 正确处理手动 POST 请求。 Nginx 服务器配置为在流启动时向 Next.js API 发送 POST 请求,但 Next.js 服务器不会记录或处理这些请求。

问题:

  • 通过 Postman 向端点发送手动 POST 请求成功更新数据库。

  • 使用 on_publish 指令从 Nginx 发出的请求似乎无法到达 Next.js API;他们既没有登录 Vercel 的仪表板,也没有更新数据库。

  • Nginx 日志不显示相关错误,并且从 Nginx 服务器通过curl 测试端点会返回“正在重定向...”消息。

环境:

Nginx 配置(/etc/nginx/nginx.conf):

rtmp {
        server {

                listen 1935;
                # ... configs
                # ...

                application live {

                        live on;
                        record off;

                        on_publish http://example.com/api/stream/startStream?streamKey=test;
                        on_publish_done http://example.com/api/stream/endStream?streamKey=test;
                 }
        }
}

Next.js API 端点 (/api/stream/startStream):

export async function POST(
  req: NextRequest
): Promise<NextResponse<ResponseData>> {
  try {
  
// Connect to database 

... 

// Receive streamKey to store in database

    const streamKey = req.nextUrl.searchParams.get("streamKey");

    if (!streamKey) {
      return NextResponse.json({
        msg: "Streamkey is not defined",
        data: false,
      });
    }

// Store streamKey in database
    
    const insertedStreamKey = await connectedStreams.insertOne({
      streamKey: streamKey,
    });

    if (!insertedStreamKey) {
   
      return NextResponse.json({
        msg: "Streamkey couldn't be inserted!",
        data: false,
      });
    }

    return NextResponse.json({
      msg: "User is successfully connected",

      data: true,
    });
  } catch (error) {
   ...
  }
}

  • 验证了 Nginx on_publish URL(Postman 工作正常并且在我的 API 日志中可见)。

  • 使用curl测试了来自Nginx服务器的直接请求。

  • 检查网络问题、SSL/TLS 错误配置和重定向行为。

nginx next.js vercel nginx-config rtmp
1个回答
0
投票

我也被这个问题困扰了很久。最后我发现我的 Nginx RTMP 从主机名解析 IP 地址时遇到一些问题。当我用

localhost
替换
127.0.0.1
后,一切都变得很好。

© www.soinside.com 2019 - 2024. All rights reserved.