Search code examples
node.jshttp-proxynode-http-proxy

How to use node-http-proxy for HTTP to HTTPS routing?


Here's the module version that I'm using:

$ npm list -g | grep proxy
├─┬ [email protected]

A webservice calls into my machine and my task is to proxy the request to a different url and host with an additional query parameter based on the contents of the request's body:

var http      = require('http'),
    httpProxy = require('http-proxy')
    form2json = require('form2json');

httpProxy.createServer(function (req, res, proxy) {
  // my custom logic
  var fullBody = '';
  req.on('data', function(chunk) {
      // append the current chunk of data to the fullBody variable
      fullBody += chunk.toString();
  });
  req.on('end', function() {
      var jsonBody = form2json.decode(fullBody);
      var payload = JSON.parse(jsonBody.payload);
      req.url = '/my_couch_db/_design/ddoc_name/_update/my_handler?id="' + payload.id + '"';

      // standard proxy stuff
      proxy.proxyRequest(req, res, {
        changeOrigin: true,
        host: 'my.cloudant.com',
        port: 443,
        https: true
      });
  });
}).listen(8080);

But I keep running into errors like: An error has occurred: {"code":"ECONNRESET"}

Anyone have an idea about what needs to be fixed here?


Solution

  • This did the trick for me:

    var httpProxy = require('http-proxy');
    
    var options = {
      changeOrigin: true,
      target: {
          https: true
      }
    }
    
    httpProxy.createServer(443, 'www.google.com', options).listen(8001);