How to create a proxy download in Nodejs

You're very close, you're sending the right http body but with the wrong http headers.

Here's a minimal working example:

const express = require('express');
const http = require('http');

const app1 = express();

app1.get('/', function (req, res) {
  res.download('server.js');
});

app1.listen(8000);

const app2 = express();

app2.get('/', function (req, res) {
  http.get({ path: '/', hostname: 'localhost', port: 8000}, function (resp) {
    res.setHeader('content-disposition', resp.headers['content-disposition']);
    res.setHeader('Content-type', resp.headers['content-type']);
    resp.pipe(res);
  });
});

app2.listen(9000);

Though I would say you should take a look at modules like https://github.com/nodejitsu/node-http-proxy which take care of the header etc . . . for you.