ReverseProxy
ReverseProxy
ReverseProxy类是一个反向代理,内置基于权重的负载均衡器
创建对象
创建ReverseProxy对象
let rp = new ReverseProxy()
属性与方法
方法 | 类型 | 参数 | 返回值 | 说明 |
---|---|---|---|---|
upsertServer | 方法 | url:string,weight:int | boolean | 添加或修改后端服务器配置 |
removeServer | 方法 | url:string | boolean | 删除后端服务器 |
getServers | 方法 | object[] | 获取所有服务器列表 | |
proxy | 方法 | ctx:Ctx | void | 执行代理请求 |
upsertServer
语法
let rp = new ReverseProxy()
rp.upsertServer(url:string,weight:int)
参数
url: 后端服务器url地址,例如:http://192.168.110.118:8999 weight:权重,例如:1
案例
import {ReverseProxy} from "http"
let rp = new ReverseProxy()
//向反向代理对象中添加了2个后端服务器,每个服务器的权重为1
rp.upsertServer("http://192.168.110.118:8999",1)
rp.upsertServer("http://192.168.110.119:8999",1)
removeServer
语法
let rp = new ReverseProxy()
rp.removeServer(url:string)
参数
url: 后端服务器url地址,例如:http://192.168.110.118:8999
案例
import {ReverseProxy} from "http"
let rp = new ReverseProxy()
//删除后端服务器
rp.removeServer("http://192.168.110.118:8999")
getServers
语法
let rp = new ReverseProxy()
rp.getServers()
案例
import {ReverseProxy} from "http"
let rp = new ReverseProxy()
//获取所有后端服务器列表
let servers = rp.getServers()
proxy
语法
rp.proxy(ctx:Ctx)
参数
ctx: Ctx对象
示例
import {ReverseProxy,HttpServer} from "http"
//创建后端集群1
let rp1 = new ReverseProxy()
rp1.upsertServer("http://192.168.110.118:8999",1)
rp1.upsertServer("http://192.168.110.119:8999",1)
//创建后端集群2
let rp2 = new ReverseProxy()
rp2.upsertServer("http://192.168.110.120:8999",1)
rp2.upsertServer("http://192.168.110.121:8999",1)
let server = new HttpServer({addr:":8081"})
server.any("/path1/",(ctx)=>{
//将当前8081端口的/path1/前缀的所有请求代理到集群1
rp1.proxy(ctx)
})
server.any("/path2/",(ctx)=>{
//将当前8081端口的/path2/前缀的所有请求代理到集群2
rp2.proxy(ctx)
})
server.start()