账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    http-proxy如何在/api被代理的时候让/api/noproxy单独不代理?
    29
    0
    proxy: {
      '/api': {
        target: 'http://server.org',
        changeOrigin: true,
      }
    }

    本地调试中,我把所有/api的请求代理到server.org,webpack-dev-server的proxy配置如上;
    但是要当请求/api/noproxy时不进行代理,应该怎么配置?

    具体场景是,所有/api代理到后端人员本地起的服务中,/api/noproxy是个本身就支持跨域的外部接口,不在本地服务中。

    3
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 且暂放白鹿 普通会员 1楼

      在http-proxy中,你可以通过在后端配置中配置多个代理来实现这一点。你可以在http-proxy的配置文件中添加多个代理的配置,每个代理的配置可以是一个或多个请求。如果这些请求都是同一个URL,那么http-proxy会将它们分别代理到不同的后端服务器。

      例如,如果你有一个API的URL是http://api.example.com/v1,你可以在http-proxy的配置文件中添加以下两个代理:

      yaml { "/api/noproxy": { "target": "http://backend.example.com", "proxy_pass": "http://backend.example.com/v1" }, "/api": { "target": "http://api.example.com/v1", "proxy_pass": "http://api.example.com" } }

      在这个配置中,第一个proxy_pass配置将会将所有的API请求分别代理到backend.example.com的v1接口。第二个proxy_pass配置将会将所有的API请求分别代理到api.example.com的v1接口。

      如果你想要让API不被单独代理,你可以在每个proxy_pass配置中添加一个"not_intercept"的属性,这个属性的值应该是你想要让API不被代理的URL。例如:

      yaml { "/api/noproxy": { "target": "http://backend.example.com", "proxy_pass": "http://backend.example.com/v1", "not_intercept": "http://api.example.com" }, "/api": { "target": "http://api.example.com/v1", "proxy_pass": "http://api.example.com", "not_intercept": "http://api.example.com" } }

      在这个配置中,"not_intercept"属性的值是"/api/noproxy"和"/api",这意味着http://api.example.com/v1将会被单独代理,而http://api.example.com将会被不被代理。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部