Vue多环境代理配置

更新日期: 2019-05-21 阅读: 3k 标签: 代理

背景: 

多人协作模式下,修改代理比较麻烦,而且很容易某个开发人员会修改了vue.config.js文件后提交了。第一,很容易引起冲突。 第二,很容易出现代理错误,需要排查。而且现在微服务盛行,在生产环境下有网关配置,不会出错,但是在本地调试会造成麻烦,如修改了代理地址需要同步修改代理中的地址,很麻烦也很容易出错。


解决思路:

1.开发中定义常量js文件,例如constants.js。用户存放各个服务需要代理的服务名。  

 let api = ""
    let loginServer = "/loginServer"
    let businessServer = "/businessServe"
    if(process.env.NODE_ENV == "development"){
        api = "/api"
        loginServer = api + LoginServer
        businessServer = api + businessServer
    }
    export {
        loginServer,
        businessServer
    }

其中api为代理规则中配置,loginServer为服务名,可根据业务需要替换 在实际的业务中就可以这么用  

 import {loginServer} from 'constants'
 function login(params){
    return  axios.post(loginServer+"/login",params)
 }

其中 loginServer为服务名,login为方法名,params为参数。在vue.config.js中配置代理

modules.exports = {
    publicPath:"/" ,
    devServer: {
        port: 8080,
        proxy:{
          '/api/loginServer':{
              target:"http://localhost:8080",
              ws:true,
              changeOrigin:true,
              pathRewrite:{
                  '^/api':'/'
              }
          },
           '/api/businessServer':{
              target:"http://localhost:8081",
              ws:true,
              changeOrigin:true,
              pathRewrite:{
                  '^/api':'/'
              }
          }
        }
    }
}

这么配置可以满足需求,但是会有多人改动vue.config.js的情况,造成以上说的错误。


解决方案:

vue中提供了 --mode 模式,并提供了 .env.local 等文件,此文件被git忽略,且可根据当前 mode设置的值寻找环境变量配置,例如 --mode=dev ,则.env.dev.local 或.env.dev 等文件中的配置会生效,.local文件会被git忽略,因此咱们用这个,--mode设置在 package.json中,在npm run serve 中添加

script:{
"serve":"vue-cli-service serve --mode=dev"
}

在项目根目录下jianli .env.dev.local文件,文件中添加 以下键值对(此文件中只接受键值对)
.env.dev.local

loginServerURL =http://localhost:8080
businessServerURL = http://localhost:8081

当然可根据不同的模式建立不同的local文件.env.prod.local等

vue.config.js中改写

modules.exports = {
    publicPath:"/" ,
    devServer: {
        port: 8080,
        proxy:{
          '/api/loginServer':{
              target:process.env.loginServerURL?process.env.loginServerURL:"httpL//localhost:8080",
              ws:true,
              changeOrigin:true,
              pathRewrite:{
                  '^/api':'/'
              }
          },
           '/api/businessServer':{
              target:process.env.loginServerURL?process.env.businessServerURL :"http://localhost:8081",
              ws:true,
              changeOrigin:true,
              pathRewrite:{
                  '^/api':'/'
              }
          }
        }
    }
}

这样就可以根据不同的环境配置不同的地址了。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/3810

相关推荐

使用Nginx反向代理google,做谷歌搜索镜像

梯子有点慢。如果用VPS直接转发给谷歌,应该会快一些。实验结果也确实是如此,尽管我用的是同一个服务器。Nginx 需要支持 sub_module ,也就是编译时有 --with-http_sub_module 。

反向代理和内网穿透

反向代理看上去看深奥,其实不然,只是因为汉语言文化的差异导致它看上去深奥。一般反派感觉都比较厉害和神秘。要理解反向代理,我们就不得不说一下正向代理。正向代理代理的对象是客户端;反向代理代理的对象是服务端

vue proxy跨域代理https

vue-cli里面的proxyTable要怎么代理https?看的网络上面都是http的,不知道该如何设置。如果直接设置https://**,就会报错,报的是未定义的错误

反向代理Cloudflare加速网站(SNIproxy)

写在教程前:为什么要反向代理cloudflare?答:缩短路由,加快cloudflare节点到大陆用户的速度,用过cloudflare的用户应该知道,这家CDN的速度在除了大陆以外的地方访问都非常快,那么又没有什么办法使其对大陆访问良好呢?

centos7下搭建高匿HTTP代理

一般适用情况:1、两台都有外网IP,一台服务器请求资源通过另外一个服务器,本文重点讲第一种。2、两台服务器,其中一台服务器只有内网IP,另外一台服务器有公网和内网IP。

什么是在线代理ip网页代理

当我们需要大量IP进行快节奏完成业绩的时候,很多人都会想到去IP代理服务商那里购买IP代理,所以我相信很多人对于IP代理这个词已经有一定的认识了,那么还有一个词叫做:在线代理ip网页代理

Proxy代理

在一个系统中,总要存储一些数据,对于这些数据,可能有一些是希望我们访问的,但是总有一些是中重要的,不希望我们访问的,希望保护起来,因此ES6新增了代理,在目标对象前架设个拦截层

node.js代理访问

本地开发,代理访问,防止跨域(一般通过webpack配置代理即可),特殊情况如携带一些自定义的登录cookie则需要通过自己写node,作为一种server中间层,单线程异步可以缓解服务器压力

vue proxy代理跨域

changeOrigin的属性值为一个布尔值,如果设置为true,那么本地会虚拟一个NODE服务端接收你的请求并代你发送该请求(中间件)。[本质上是本地开了一个服务器dev-server,所有的请求都通过这里转发出去。]

Nginx 反向代理返回结果为空的问题

现在有一个 Web 项目,前端是使用 Vue.js 开发的,整个前端需要部署到 K8S 上,后端和前端分开,同样也需要部署到 K8S 上,因此二者需要打包为 Docker 镜像。对前端来说,打包 Docker 就遇到了一个问题:跨域访问问题。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!