var http = require('http'), httpProxy = require('http-proxy');
// 新建一个代理 Proxy Server 对象
var proxy = httpProxy.createProxyServer({});
// 捕获异常
proxy.on('error', function (err, req, res) {
res.writeHead(500, {
'Content-Type': 'text/plain'
});
res.end('Something went wrong. And we are reporting a custom error message.');
});
proxy.on('proxyReq', function(proxyReq, req, res, options) {
proxyReq.setHeader('Accept-Encoding', 'none');
});
// 另外新建一个 HTTP 80 端口的服务器,也就是常规 Node 创建 HTTP 服务器的方法。
// 在每次请求中,调用 proxy.web(req, res config) 方法进行请求分发
var server = http.createServer(function(req, res) {
// 在这里可以自定义你的路由分发
var host = req.headers.host, ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress;
// console.log("client ip:" + ip + ", host:" + host +"req is "+ console.dir(res));
var _write = res.write;
// req.rawHeader['Accept']="nogzip";
// console.log(console.dir(req.rawHeader));
res.write = function (data) {
// console.log(console.dir(data));
_write.call(res, "替换内容"
// + data.toString()
);
}
proxy.web(req, res, { target: "http://"+host });
// console.log(console.dir(res));
});
console.log("listening on port 80")
server.listen(80);