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

如何配置Nginx代理Nuxt应用并解决静态资源404问题

解决Nuxt代理到/admin路径后静态资源404的问题

问题根源:你的Nuxt应用默认将静态资源路径设为网站根目录(比如/runtime.js),但通过Nginx代理到/admin路径后,浏览器会尝试从localdomain.local/runtime.js加载资源,而非localdomain.local/admin/runtime.js,导致404错误。

以下是两种可行的解决方法:

方法一:修改Nuxt的基础路径配置(推荐)

让Nuxt生成的所有资源和路由都自动带上/admin前缀:

  • Nuxt 3:在nuxt.config.ts中添加配置:
export default defineNuxtConfig({
  app: {
    baseURL: '/admin/'
  }
})
  • Nuxt 2:在nuxt.config.js中添加配置:
export default {
  router: {
    base: '/admin/'
  }
}

修改完成后重启Nuxt服务,此时Nuxt输出的index.html里的资源路径会自动变成/admin/runtime.js这类,浏览器就能正确请求到资源。

方法二:修改Nginx配置,重写资源请求路径

如果不想改动Nuxt配置,可以通过Nginx拦截静态资源请求,转发到Nuxt服务器:
修改你的Nginx配置中的server块,添加以下规则:

# 拦截Nuxt的静态资源路径(Nuxt 3默认资源路径以/_nuxt/开头,Nuxt 2以/_nuxt/或/static/开头,可根据实际调整)
location ~ ^/_nuxt/ {
    proxy_pass http://host.docker.internal:3001;
    proxy_set_header Host $host:$proxy_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

# 额外处理直接根路径的静态资源(如runtime.js、common.js等)
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
    # 仅处理来自/admin页面的资源请求
    if ($http_referer ~* /admin/) {
        proxy_pass http://host.docker.internal:3001;
        proxy_set_header Host $host:$proxy_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

修改后重启Nginx服务,即可让浏览器请求的静态资源被正确转发到Nuxt服务器。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 07:16:27