Sto provando a utilizzare il nodo-http-proxy come proxy inverso, ma non riesco a far funzionare le richieste POST e PUT. Il file server1.js è il proxy inverso (almeno per le richieste con l'url "/ forward-this") e server2.js è il server che riceve le richieste proxy. Per favore, spiegami cosa sto facendo in modo errato.Come invertire le richieste POST e PUT del client proxy utilizzando il nodo-http-proxy
Ecco il codice per server1.js:
// File: server1.js
//
var http = require('http');
var httpProxy = require('http-proxy');
httpProxy.createServer(function (req, res, proxy) {
if (req.method == 'POST' || req.method == 'PUT') {
req.body = '';
req.addListener('data', function(chunk) {
req.body += chunk;
});
req.addListener('end', function() {
processRequest(req, res, proxy);
});
} else {
processRequest(req, res, proxy);
}
}).listen(8080);
function processRequest(req, res, proxy) {
if (req.url == '/forward-this') {
console.log(req.method + ": " + req.url + "=> I'm going to forward this.");
proxy.proxyRequest(req, res, {
host: 'localhost',
port: 8855
});
} else {
console.log(req.method + ": " + req.url + "=> I'm handling this.");
res.writeHead(200, { "Content-Type": "text/plain" });
res.write("Server #1 responding to " + req.method + ": " + req.url + "\n");
res.end();
}
}
Ed ecco il codice per server2.js:
// File: server2.js
//
var http = require('http');
http.createServer(function (req, res, proxy) {
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(8855);
function processRequest(req, res) {
console.log(req.method + ": " + req.url + "=> I'm handling this.");
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.write("Server #2 responding to " + req.method + ': url=' + req.url + '\n');
res.end();
}
Che ha funzionato perfettamente. Grazie! –
Sebbene sia una vecchia risposta, per farlo funzionare dovresti sostituire 'var proxy = new httpProxy.RoutingProxy();' con 'var proxy = httpProxy.createProxyServer ({});' – Saber