node-http-proxy 是一个可编程的,支持 websocket 的 HTTP 代理库。它适合实现反向代理和负载均衡器的组件。
安装
npm install http-proxy --save
核心概念
const httpProxy = require('http-proxy')
const proxy = httpProxy.createProxyServer(options)
proxy 是一个对象,其中包含四个方法
- web: req, res, [options] 用来代理常规的 HTTP(s) 请求
- ws: req, socket, head, [options] 用来代理 websocket 请求
- listen: port 用来监听端口,并启动 webserver
- close: [callback] 用来关闭端口监听和 webserver
如果没有调用 proxy.listen 方法的话,上面的操作并不会创建一个 webserver。
// 代理请求
http.createServer((req, res) => {
proxy.web(req, res, { target: 'https://xxx.com' })
proxy.on('error', err => {})
// 也可以把错误处理函数作为 web 方法的第四个参数传递
})
当请求被代理时,它遵循两个不同的管道,这两个管道可以对 req 和 res 对象做一些转换。第一个管道(incoming)负责创建和操作将客户端连接到目标的流。第二个管道(outgoing)负责创建和操作流,该流从目标将数据返回到客户端。