NodeJs 中 http-proxy 使用
http-proxy
介绍
官网-GitHubnode-http-proxy
是一个 HTTP 可编程的,支持 websockets 的代理库。它适合于实现诸如反向代理和负载平衡器之类的组件。
使用场景
一般使用在前端静态页,后端是启动一个服务,挂载那个静态页。还有一个提供 api 的服务端。通过 NodeJs 这一层的粘合层来做一点的事,同时需要调用 api 的真实服务,就可以使用代理。
简而言之就是前端发起请求,NodeJS 层使用代理进行转发,后端服务层处理返回。
简单用法
以 ExpressJs 为例。
1 | const http = require('http') |
高阶
修改请求
在请求接口层之前,追加 headers 。
这里有个坑,就是我在 express 中间件中需要获取 body 的值就 需要使用 app.use(express.json())
来解析,但是 http-proxy
转发代理的时候,解析后的 body 转发不过去,只能在转换回去。
1 | function modifyProxyReq (proxyReq, req, res) { |
修改返回结果
1 | proxy.on('proxyRes', function(proxyRes,req,res) { |
总结
该组件简单使用来说非常方便,如果有定制需求的话,需要配合监听请求使用。其中遇到 http—>https 代理来说,会报证书错误之类的,配置选项追加 changeOrigin: true
来解决问题。