K8s容器中Nuxt+Spring项目vue.config.js代理配置问题排查
问题分析与解决方案
核心问题
你使用的是Nuxt.js框架,但错误配置了Vue CLI专属的vue.config.js——这个文件在Nuxt项目中完全不生效,导致代理规则根本没被加载。另外,devServer.proxy仅在Vue CLI的开发服务器中生效,生产环境部署到K8s容器后,该配置不会起作用,请求自然无法转发到8080端口。
解决方案分场景处理
场景1:开发环境(本地调试或K8s内开发模式运行)
- 安装Nuxt官方代理模块:
npm install @nuxtjs/proxy --save-dev
- 修改
nuxt.config.js,添加模块和代理配置:
export default { modules: ['@nuxtjs/proxy'], proxy: { '/api': { target: 'http://localhost:8080', changeOrigin: true } } }
- 重启Nuxt开发服务器,此时前端请求
/api/v1/endpoint会自动转发到http://localhost:8080/api/v1/endpoint。
场景2:生产环境(K8s容器部署)
生产环境下Nuxt是静态构建产物或SSR服务,开发服务器的代理不再生效,推荐用Nginx做统一反向代理:
- 编写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; } }
- 调整Dockerfile:将Nuxt构建产物、Spring应用、Nginx打包进同一个容器,使用
supervisord或自定义shell脚本管理多进程(同时启动Spring和Nginx)。 - K8s部署时,仅暴露容器的80端口,所有前端、后端请求都通过Nginx转发,避免直接暴露后端8080端口。
额外检查项
- 验证容器内Spring应用是否在8080端口正常监听:可在容器内执行
curl localhost:8080/api/v1/endpoint测试连通性。 - 若使用Nuxt SSR模式,也可通过配置
serverMiddleware实现代理,但Nginx方案更稳定通用。
内容的提问来源于stack exchange,提问作者Fabian
相关产品推荐
相关产品推荐

