2016-05-31 9 views
0

Ich versuche einen Reverse Proxy vor einem Couchbase SyncGateway zu bauen. Bevor ich Anforderungen an das Sync-Gateway sende, möchte ich sie zur Authentifizierung an einen Authentifizierungsserver senden. Wenn alles in Ordnung ist, sende die Anfrage (unverändert vom Original) an das Sync-Gateway. Die Datenbank ist nicht auf dem neuesten Stand mit den Client-Änderungen, und ich glaube, dass dies daran liegt, dass ich PUT/POST-Anfragen nicht erfolgreich ausführen kann. Hier ist der Code, den ich habe:Knoten js Reverse Proxy PUT/POST Anfragen mit Couchbase Sync Gateway

var http = require('http'); 
var httpProxy = require('http-proxy'); 
var apiProxy = httpProxy.createProxyServer(); 
var request = require('request').defaults({json: true}); 

var authServer = 'http://authserverdns:5000'; 
var syncGateway = 'http://syncgatewaydns:4984'; 

http.createServer(function (req, res) { 
    if (req.method == 'POST' || req.method == 'PUT') { 
     req.body = ''; 

     req.addListener('data', function(chunk) { 
      req.body += chunk; 
     }); 

     req.addListener('end', function() { 
      processRequest(req, res); 
     }); 
    } else { 
     processRequest(req, res); 
    } 

}).listen(8080); 

function processRequest(req, res) { 
    request(authServer, function(error, response, body) { 
     if (body.authenticated) { 
      console.log('authenticated !!!'); 
      apiProxy.web(this.req, this.res, {target: this.sg}); 
     } else { 
      console.log('request denied !!!'); 
     } 
    }.bind({req: req, res: res, sg: syncGateway})); 
} 

Zuerst war ich mit einem Express-Server und mit demselben Problem. Als ich das Problem untersucht habe, sieht es so aus, als ob es ein Problem mit Express und Proxying von PUT/POST-Anfragen gibt. Also habe ich versucht, einige Beispiele zu verwenden, und das ist es, womit ich fertig bin, aber immer noch nicht funktioniert. Irgendwelche Ideen, wo ich hier falsch liege? Authentifizierte Abzüge, also weiß ich, dass ich mich an die Stelle der Proxying stelle. Und das Sync-Gateway scheint mit den GET-Anfragen in Ordnung zu sein.

Danke

Antwort

0

ugh. Ich habe den Rest der URL nicht zur Weiterleitungsadresse für das Sync-Gateway hinzugefügt. Der Beitrag here hat geholfen.