Node http-proxy and express

express, node-http-proxy, node.js

Solution

Using http-proxy 1.0 with express:

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

var apiProxy = httpProxy.createProxyServer();

app.get("/api/*", function(req, res){ 
  apiProxy.web(req, res, { target: 'http://google.com:80' });
});

Problem

I'm trying to do something like this: ``` // Setup prox to handle blog requests httpProxy.createServer({ hostnameOnly: true, router: { 'http://localhost': '8080', 'http://localhost/blog': '2368' } }).listen(8000); ``` Previously I was using this: ``` http.createServer(app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); }); ``` Basically, I want to still use express... but, when people go to `http://localhost/blog` get taken to the blog but still be served over `port 8080` (which will eventually be port 80) So I switched it to this and it worked better. The problem is that express takes over the routing (from what I can tell) ``` var options = { // pathnameOnly: true, router: { 'localhost': 'localhost:8080', 'localhost/blog': 'localhost:2368' } } // Setup prox to handle blog requests var proxyServer = httpProxy.createServer(options); proxyServer.listen(9000); require('./app/server/router')(app); http.createServer(app).listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); }); ```

Original source

Related problems