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

Nuxt3调用后端/api/data接口返回404页面未找到的原因排查

Nuxt3调用后端接口返回404的原因及解决方法

问题根源

当你在Nuxt3组件中用$fetch('http://localhost/api/data')发起请求时,服务器端渲染(SSR)阶段的请求是从服务器内部发起的,此时localhost指向的是Nuxt3服务本身监听的端口,而非Nginx的监听端口。也就是说,这个请求没有经过Nginx的转发规则,直接被Nuxt3处理了——而Nuxt3并没有/api/data这个页面路由,所以返回404错误。

而浏览器直接访问http://localhost/api/data时,请求是从客户端发起,会经过Nginx的转发逻辑,被路由到后端服务,因此能正常返回数据。

解决方法

方法1:使用相对路径请求

把请求地址改成相对路径,Nuxt3的$fetch会自动适配客户端和服务器端的请求场景:

export default defineComponent({
  name: "mycomponent",
  async setup() {
    console.log(await $fetch('/api/data'));
  }
})
  • 客户端环境:请求会基于当前页面域名发送,自动经过Nginx转发到后端。
  • 服务器端渲染环境:Nuxt3会根据配置自动处理请求代理(或结合下面的代理配置)。

方法2:配置Nuxt3的内部代理

如果需要在服务器端渲染时直接将请求转发到后端(不经过Nginx),可以在nuxt.config.ts中配置Nitro代理:

export default defineNuxtConfig({
  nitro: {
    // 开发环境代理
    devProxy: {
      '/api': {
        target: 'http://localhost:你的后端服务端口',
        changeOrigin: true
      }
    },
    // 生产环境代理
    proxy: {
      '/api': {
        target: 'http://localhost:你的后端服务端口',
        changeOrigin: true
      }
    }
  }
})

配置后,无论是客户端还是服务器端的/api开头请求,都会直接转发到后端服务,避免绕路Nginx导致的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:10:11