Vue项目配置多个代理服务器的多种方案

 更新时间:2025年07月15日 09:30:17   作者:江城开朗的豌豆  
今天咱们来聊聊Vue项目中一个非常实用的技巧 - 如何配置多个代理服务器,相信不少小伙伴在对接多个后端服务时都遇到过跨域问题,这篇文章就教你如何优雅解决,需要的朋友可以参考下

为什么需要多代理?

在实际开发中,我们经常会遇到这些情况:

  • 需要同时对接测试环境和生产环境API
  • 项目调用了多个不同域名的微服务
  • 某些特殊接口需要走特定代理

这时候,单一代理配置就捉襟见肘了。下面我就分享几种实用的多代理配置方案。

方案一:vue.config.js基础配置

这是最基础的代理配置方式,适合大多数场景。

// vue.config.js
module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: 'http://我的测试环境.com',
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      },
      '/other-api': {
        target: 'http://我的其他服务.com',
        changeOrigin: true,
        pathRewrite: {
          '^/other-api': ''
        }
      }
    }
  }
}

使用时代码中这样调用:

// 调用测试环境API
axios.get('/api/user/info')

// 调用其他服务API
axios.get('/other-api/product/list')

优点

  • 配置简单直观
  • 适合大多数项目
  • 不同路径对应不同服务

方案二:环境变量动态切换

如果需要根据环境动态切换代理目标,可以这样配置:

// vue.config.js
module.exports = {
  devServer: {
    proxy: {
      '/api': {
        target: process.env.VUE_APP_API_BASE,
        changeOrigin: true,
        pathRewrite: {
          '^/api': ''
        }
      }
    }
  }
}

然后在不同环境的.env文件中配置:

# .env.development
VUE_APP_API_BASE=http://我的开发环境.com

# .env.production
VUE_APP_API_BASE=http://我的生产环境.com

方案三:更灵活的多代理配置

对于复杂场景,可以这样组织代码:

// vue.config.js
const proxyTable = {
  dev: {
    '/api': {
      target: 'http://dev.我的服务.com',
      // 其他配置...
    },
    '/auth': {
      target: 'http://dev.我的认证服务.com',
      // 其他配置...
    }
  },
  test: {
    '/api': {
      target: 'http://test.我的服务.com',
      // 其他配置...
    }
    // 其他代理...
  }
}

module.exports = {
  devServer: {
    proxy: proxyTable[process.env.NODE_ENV] || proxyTable.dev
  }
}

实战案例:电商项目多服务代理

假设我们开发一个电商项目,需要对接:

  1. 用户服务 user-service
  2. 商品服务 product-service
  3. 订单服务 order-service

配置如下:

module.exports = {
  devServer: {
    proxy: {
      '/user': {
        target: 'http://user-service.我的公司.com',
        changeOrigin: true,
        pathRewrite: {'^/user': ''}
      },
      '/product': {
        target: 'http://product-service.我的公司.com',
        changeOrigin: true,
        pathRewrite: {'^/product': ''}
      },
      '/order': {
        target: 'http://order-service.我的公司.com',
        changeOrigin: true,
        ws: true,  // 如果需要WebSocket
        pathRewrite: {'^/order': ''}
      }
    }
  }
}

使用时:

// 获取用户信息
axios.get('/user/info')

// 获取商品列表
axios.get('/product/list')

// 提交订单
axios.post('/order/create', orderData)

常见问题解决方案

1. 代理不生效怎么办?

  • 检查target地址是否正确
  • 确认changeOrigin设置为true
  • 重启devServer

2. WebSocket代理失败?

proxy: {
  '/socket': {
    target: 'ws://我的websocket服务.com',
    ws: true,
    changeOrigin: true
  }
}

3. 需要携带Cookie怎么办?

proxy: {
  '/api': {
    target: 'http://我的服务.com',
    changeOrigin: true,
    cookieDomainRewrite: {
      "*": "localhost" // 把cookie域名重写为本地
    }
  }
}

配置建议

根据我6年的项目经验,建议:

  1. 代理路径前缀要语义化(如/api、/user等)
  2. 复杂项目建议按功能模块划分代理
  3. 生产环境记得移除或替换代理配置
  4. 使用环境变量管理不同环境的代理目标
  5. 定期检查代理配置,避免冗余

总结

通过合理配置多个代理,我们可以:

  • 轻松解决开发环境跨域问题
  • 同时对接多个后端服务
  • 实现环境间的无缝切换
  • 提高前端开发效率

写在最后​

以上就是Vue项目配置多个代理服务器的操作指南的详细内容,更多关于Vue项目多代理配置的资料请关注脚本之家其它相关文章!

相关文章

  • 茶余饭后聊聊Vue3.0响应式数据那些事儿

    茶余饭后聊聊Vue3.0响应式数据那些事儿

    这篇文章主要介绍了茶余饭后聊聊Vue3.0响应式数据那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)

    使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)

    这篇文章主要介绍了使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件 ,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • Vue使用Canvas绘制图片、矩形、线条、文字,下载图片

    Vue使用Canvas绘制图片、矩形、线条、文字,下载图片

    这篇文章主要介绍了Vue使用Canvas绘制图片、矩形、线条、文字,下载图片的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Vue+tracking.js 实现前端人脸检测功能

    Vue+tracking.js 实现前端人脸检测功能

    这篇文章主要介绍了Vue+tracking.js 实现前端人脸检测功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • vue3手动删除keepAlive缓存的方法

    vue3手动删除keepAlive缓存的方法

    当我们未设置keepAlive的最大缓存数时,当缓存组件太多,会导致内存溢出,本文给大家介绍了vue3手动删除keepAlive缓存的方法,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • el-table嵌套el-popover处理卡顿的解决

    el-table嵌套el-popover处理卡顿的解决

    本文主要介绍了el-table嵌套el-popover处理卡顿的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 通过cordova将vue项目打包为webapp的方法

    通过cordova将vue项目打包为webapp的方法

    这篇文章主要介绍了通过cordova将vue项目打包为webapp的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • vue2.0 + ele的循环表单及验证字段方法

    vue2.0 + ele的循环表单及验证字段方法

    今天小编就为大家分享一篇vue2.0 + ele的循环表单及验证字段方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue3实现pdf在线预览的三种方式

    Vue3实现pdf在线预览的三种方式

    这篇文章主要为大家详细介绍了使用Vue3实现pdf在线预览的三种常用方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-02-02
  • vue3中页面跳转两种实现方式

    vue3中页面跳转两种实现方式

    在Vue3中Vue Router是一个常用的路由管理库,它提供了一种简单而强大的方式来实现路由跳转和导航,这篇文章主要给大家介绍了关于vue3中页面跳转的两种实现方式,需要的朋友可以参考下
    2024-09-09

最新评论