手写可配置的express & nodejs的代理

注意:该文章中设置代理的方法存在很大的问题,请不要在使用。这里只作为记录。 非常推荐你使用http-proxy-middleware,作为生产环境代理的包。你可以看我的这篇文章,里面有一个非常小巧的写法,可以实现各种代理的方法,Express 代理中间件的写法 关于该文章中设置代理会产生的问题,在这篇文章中我会做详细的说明, TCP链接高Recv-Q的原因以及解决方法 nodejs比较好的代理包有:node-http-proxy和http-proxy-middleware。这两个我都用过,它们的优点自不用说,只说说缺点:它们不能从配置文件里读取代理配置。每添加一个拦截路径都需要多加一个接口调用。 所以,我需要自己写一个http代理,要包含一下功能: 从配置文件里读取代理配置 可以路径重写 这样做的好处是:新增服务只需要在配置文件上加上该服务,无需修改业务逻辑 1. /config/default.js module.exports = { "ENV":"dev", "PORT":"8088", "maxAge": 10, "proxy":{ "olap":{ "host":"172.16.200.225", "port":"8092", "form":"", "to":"" }, "qc":{ "host":"192.168.40.231", "port":"30088" }, "api":{ "host":"192.168.40.231", "port":"30412" }, "ocm":{ "host": process.env.ocm_host || "192.168.40.119", "port": process.env.ocm_port || "31003" } } } 2. /app.js 将所有要走代理的路径前必需加上 /p, 这个是我的个人配置,当然也可以是其他的名字。 var express = require('express'); var compression = require('compression'); var path = require('path'); var config = require('config'); var log4js = require('log4js'); var wsProxyConfig = config....

2018-02-09 · 2 min · 王端端