title: Redirect an http request from a remote server to a local server using nodejs
body: <p>There is a feature in a tool called charles that allows you to map remote requests:</p>
  
  <p><a href="http://www.charlesproxy.com/documentation/tools/map-remote/">http://www.charlesproxy.com/documentation/tools/map-remote/</a></p>
  
  <p>Basically, it can take any request to a server(even if you're not the one running it) and then makes a new request to another server, preserving the path and the query string.  The response from the second server then overwrites the response from the first server.</p>
  
  <p>I just want to know if there is a node module that can do this.  I tried using http-proxy, but I have a feeling this map remote tool is a bit different than a proxy, since it seems like you must own both servers with a proxy.</p>
  
  <p>EDIT: Tried using the http-proxy node module again, but can't seem to get it to work.  Here's my code:</p>
  
  <pre><code>var http = require('http')
  , httpProxy = require('http-proxy');
  
  httpProxy.createServer({
      hostnameOnly: true,
      router: {
          'www.stackoverflow.com': 'localhost:9000',
      }
  }).listen(80);
  
  // Create your target server
  //
  http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2));
    res.end();
  }).listen(9000);
  </code></pre>
  
  <p>My expectation is that when I go to www.stackoverflow.com or www.stackoverflow.com:80, it will instead redirect to my localhost:9000</p>