Vue怎样配置多个代理,要注意哪些问题

Admin 2022-07-05 群英技术资�

今天小编跟大家讲解下有关“Vue怎样配置多个代理,要注意哪些问题”的内容 ,相信小伙伴们对这个话题应该有所关注吧,小编也收集到了相关资料,希望小伙伴们看了有所帮助�

在Vue项目的开发过程中,为了本地调试方便,我们通常会在 vue.config.js 中配� devServer 来在本地启动一个服务器,在这个选项中,我们会配置proxy 属性来将指向到本地的请求(例如� /api/action� 代理到后端的开发服务器上(例如� https://xxx.xxx.xxx/api/action�

devServer: {
        port: 8081,
        proxy: {
            '/api/action': {
                target: 'https://192.168.200.106:81',
                changeOrigin: true,
                ws: true,
                secure: false
            }
        }
    },
​```

在这个配置中,要注意以下两点�

接口地址有重叠地址时,将匹配度低的放在后面�

例如�

  1. * � / 匹配� 192.191.1.1;
  2. * � /api 匹配� 192.191.1.2
  3. * � /api/action 匹配� 192.191.1.3

如果我们像下面一样书写:

proxy: {
            '/': {
                target: 'https://192.191.1.1',
                changeOrigin: true,
                ws: true,
                secure: false
            },
    '/api': {
                target: 'https://192.191.1.2',
                changeOrigin: true,
                ws: true,
                secure: false
            },
    '/api/action': {
                target: 'https://192.191.1.3',
                changeOrigin: true,
                ws: true,
                secure: false
            }
        }

那么所有到/, /api� /api/action 的请求将全部被代理到 192.191.1.1 上面�

原因是这里的匹配实际上是一个正则匹配的过程,当我们请求 /api 时,首先读取到了配置项中的第一个,拿配置中� / 去匹配请求中� /api � 发现请求�/api 中包含配置项/, 匹配成功,直接将请求代理到了 192.191.1.1 上面去, �/api/action的匹配也同理�

也就是说,它的匹配规则是� 拿配置项中的地址去匹配请求中的地址,如果请求中的地址中包含配置中的地址,则匹配成功,否则,拿下一个配置项继续匹配�

所以,配置中的地址与请求地址中匹配的字符越少,匹配度越低� 上例中配置中的地址�/)与请求地址�/api)只有一个字符是匹配的,所以匹配度低�

所以我们正确的写法应该是:

proxy: {
            '/api/action': {
                target: 'https://192.191.1.3',
                changeOrigin: true,
                ws: true,
                secure: false
            },
    '/api': {
                target: 'https://192.191.1.2',
                changeOrigin: true,
                ws: true,
                secure: false
            },
    '/': {
                target: 'https://192.191.1.1',
                changeOrigin: true,
                ws: true,
                secure: false
            }
        }

这样到三个地址的请求就都可以正确代理到相应的地址去了

多个地址代理同一个target 时,可进行合�

在实际应用中,由于后端采用微服务模式开发,在开发阶段,我们可能会将不同的服务代理到不同的地址上,当服务很多时,我们代理的数量也就很多�

proxy: {
  		'/api/action': {
                target: 'https://192.191.1.3',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action2': {
                target: 'https://192.191.1.4',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action3': {
                target: 'https://192.191.1.3',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action4': {
                target: 'https://192.191.1.4',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action5': {
                target: 'https://192.191.1.5',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action6': {
                target: 'https://192.191.1.6',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action7': {
                target: 'https://192.191.1.5',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action8': {
                target: 'https://192.191.1.6',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action9': {
                target: 'https://192.191.1.7',
                changeOrigin: true,
                ws: true,
                secure: false
            },
			 '/api': {
                target: 'https://192.191.1.2',
                changeOrigin: true,
                ws: true,
                secure: false
            },
			 '/': {
                target: 'https://192.191.1.1',
                changeOrigin: true,
                ws: true,
                secure: false
            },              
        }

当配置的代理数量超过十个时,开发环境编译打包时会报以下错误�

为了解决报错,也同时减少代码体积,我们可以对具有同一个target的配置项进行合并,由上文我们可知,这里其实是一个正则匹配的过程,那我们就可以利用正则语法将他们进行合并�

proxy: {
  		'/api/action|/api/action3': {
                target: 'https://192.191.1.3',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action2|/api/action4'': {
                target: 'https://192.191.1.4',
                changeOrigin: true,
                ws: true,
                secure: false
            },
             
              '/api/action5|/api/action7': {
                target: 'https://192.191.1.5',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action6|/api/action8': {
                target: 'https://192.191.1.6',
                changeOrigin: true,
                ws: true,
                secure: false
            },
              '/api/action9': {
                target: 'https://192.191.1.7',
                changeOrigin: true,
                ws: true,
                secure: false
            },
			 '/api': {
                target: 'https://192.191.1.2',
                changeOrigin: true,
                ws: true,
                secure: false
            },
			 '/': {
                target: 'https://192.191.1.1',
                changeOrigin: true,
                ws: true,
                secure: false
            },              
        }

当然,在正式部署的时候,还是需要后端去做统一代理�


以上就是关于“Vue怎样配置多个代理,要注意哪些问题”的介绍了,感谢各位的阅读,如果大家想要了解更多相关的内容,欢迎关注群英网络,小编每天都会为大家更新不同的知识�

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:[email protected]进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容�

猜你喜欢

群英网络开启智能安全云计算之旅

注册领取新人大礼�
专业资深工程师驻�
7X24小时快速响�
一站式无忧技术支�
免费备案服务

联系我们

24小时售后 24小时售后TEL�0668-2555666 售前咨询TEL�400-678-4567 投诉建议TEL�0668-2555999 投诉建议邮箱:t[email protected] 信息安全TEL�0668-2555118 域名空间客服 公司总机�0668-2555555 公司传真�0668-2555000
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 � 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部