UNPKG

1.01 kBJavaScriptView Raw
1var http = require('http');
2var htproxy = require('http-proxy');
3
4var port = parseInt(process.env.PORT);
5var host = process.env.HOST;
6
7var upstream_host = process.env.UPSTREAM_HOST;
8var upstream_port = parseInt(process.env.UPSTREAM_PORT);
9var upstream_size = parseInt(process.env.UPSTREAM_SIZE);
10
11var addresses = [];
12for(i=0;i<upstream_size;i++){
13 addresses.push({
14 host: upstream_host,
15 port: upstream_port + i,
16 protocol: 'http',
17 });
18}
19
20// Proxy
21var proxy = htproxy.createProxyServer();
22
23// Hanle Error
24proxy.on('proxyError',function(err,req,res){
25 console.error("Proxy Error: ",err);
26 res.writeHead(500);
27 res.write("Upstream Proxy Error");
28 res.end();
29});
30
31// Main HTTP Server
32http.createServer(function (req, res) {
33
34 var target = addresses.shift();
35
36 proxy.web(req, res, {target: target});
37
38 addresses.push(target);
39
40}).listen(port,function(){
41 if (process.getuid && process.setuid &&
42 process.env.SUDO_USER && process.getuid() == 0)
43 process.setuid(process.env.SUDO_USER);
44})