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

K8s容器中Nuxt+Spring项目vue.config.js代理配置问题排查

问题分析与解决方案

核心问题

你使用的是Nuxt.js框架,但错误配置了Vue CLI专属的vue.config.js——这个文件在Nuxt项目中完全不生效,导致代理规则根本没被加载。另外,devServer.proxy仅在Vue CLI的开发服务器中生效,生产环境部署到K8s容器后,该配置不会起作用,请求自然无法转发到8080端口。


解决方案分场景处理

场景1:开发环境(本地调试或K8s内开发模式运行)

  1. 安装Nuxt官方代理模块:
npm install @nuxtjs/proxy --save-dev
  1. 修改nuxt.config.js,添加模块和代理配置:
export default {
  modules: ['@nuxtjs/proxy'],
  proxy: {
    '/api': {
      target: 'http://localhost:8080',
      changeOrigin: true
    }
  }
}
  1. 重启Nuxt开发服务器,此时前端请求/api/v1/endpoint会自动转发到http://localhost:8080/api/v1/endpoint。

场景2:生产环境(K8s容器部署)

生产环境下Nuxt是静态构建产物或SSR服务,开发服务器的代理不再生效,推荐用Nginx做统一反向代理:

  1. 编写Nginx配置文件(nginx.conf):
server {
  listen 80; # 对外仅暴露80端口,替代原3000、8080端口

  # 处理前端页面请求
  location / {
    root /usr/share/nginx/html; # Nuxt构建后的静态文件存放目录
    try_files $uri $uri/ /index.html; # SPA路由 fallback 规则
  }

  # 代理后端API请求
  location /api {
    proxy_pass http://localhost:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}
  1. 调整Dockerfile:将Nuxt构建产物、Spring应用、Nginx打包进同一个容器,使用supervisord或自定义shell脚本管理多进程(同时启动Spring和Nginx)。
  2. K8s部署时,仅暴露容器的80端口,所有前端、后端请求都通过Nginx转发,避免直接暴露后端8080端口。

额外检查项

  • 验证容器内Spring应用是否在8080端口正常监听:可在容器内执行curl localhost:8080/api/v1/endpoint测试连通性。
  • 若使用Nuxt SSR模式,也可通过配置serverMiddleware实现代理,但Nginx方案更稳定通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:00:06