Skip to content

Instantly share code, notes, and snippets.

@leapar
Last active February 9, 2017 08:44
Show Gist options
  • Save leapar/9a27d23333123903aae64781abbfec11 to your computer and use it in GitHub Desktop.
Save leapar/9a27d23333123903aae64781abbfec11 to your computer and use it in GitHub Desktop.
http-proxy 请求进行多服务器分发

客户端发送http请求,后端进行多个服务器转发。本例转发了3个服务器。

var https = require('https');
var httpProxy = require('http-proxy');
var http = require('http');

httpProxy.createProxyServer({
  target: 'https://app.datadoghq.com',
  agent: https.globalAgent,
  headers: {
    host: 'app.datadoghq.com'
  },
}).listen(10001);

httpProxy.createProxyServer({
  target: {
    host: '172.29.231.70',
    port: 8000
  }
}).listen(10002);

var proxyCI = httpProxy.createServer({
  target: 'https://dc-cloud.oneapm.com',
  agent: https.globalAgent,
  headers: {
    host: 'dc-cloud.oneapm.com'
  },
});//.listen(10000);

http.createServer(function (req, res) {
  req.url  = req.url.replace("\/?","?");
  if(req.url == "/intake?api_key=e7afaf986f5cc822406cbd5831328462") {
    req.url = "/infrastructure/metrics?license_key=VgAAA1sNB1Ze953TH1YTVV5KXxb55aBVWR9QBQRXSe38fAMASwkKSgNU92f1CAMeUgIYUFA=";
    proxyCI.web(req, res);
  }
  //console.log(req.url);
  
}).listen(10003);

//http://dc-cloud.oneapm.com/infrastructure/metrics?license_key=VgAAA1sNB1Ze953TH1YTVV5KXxb55aBVWR9QBQRXSe38fAMASwkKSgNU92f1CAMeUgIYUFA=
//http://172.29.225.114:1000/infrastructure/metrics?license_key=VgAAA1sNB1Ze953TH1YTVV5KXxb55aBVWR9QBQRXSe38fAMASwkKSgNU92f1CAMeUgIYUFA=

var proxy = httpProxy.createServer({
  target: {
    port: 10001,
    host: 'localhost'
  },
  forward: {
    port: 10002,
    host: 'localhost'
  },
 forward: {
    port: 10003,
    host: 'localhost'
  },
});//.listen(10000);

var proxyServer = http.createServer(function (req, res) {
  req.url  = req.url.replace("\/?","?");
  //console.log(req.url);
  proxy.web(req, res);
}).listen(10000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment