Skip to content

Instantly share code, notes, and snippets.

@brianswisher
Last active December 17, 2015 13:10
Show Gist options
  • Save brianswisher/5615416 to your computer and use it in GitHub Desktop.
Save brianswisher/5615416 to your computer and use it in GitHub Desktop.
Simple pipe driven proxy server
#!/usr/bin/env node
var sys = require('sys'),
url = require('url'),
http = require('http'),
port = 9000,
acceptor = http.createServer().listen(port),
host = process.argv[2] || 'localhost';
acceptor.on('request', function(request, response) {
console.log('request ' + request.url);
request.pause();
var options = url.parse(request.url);
options.headers = request.headers;
options.method = request.method;
options.agent = false;
var connector = http.request(options, function(serverResponse) {
serverResponse.pause();
response.writeHeader(serverResponse.statusCode, serverResponse.headers);
serverResponse.pipe(response);
serverResponse.resume();
});
request.pipe(connector, {end:true});
request.resume();
});
sys.puts("Server running at http://".concat(host, ':', port));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment