节点 js 反向代理 PUT/POST 请求 w/Couchbase 同步网关
Node js Reverse Proxy PUT/POST Requests w/ Couchbase Sync Gateway
我正在尝试在 Couchbase SyncGateway 前构建一个反向代理。在将请求发送到同步网关之前,我想将它们发送到身份验证服务器进行身份验证,然后如果一切正常,将请求(未修改原始请求)发送到同步网关。数据库没有与客户端修改保持同步,我相信这是因为我没有成功代理 PUT/POST 请求。这是我的代码:
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}));
}
起初我使用的是快速服务器并且遇到了同样的问题。当我调查问题时,看起来 Express 和代理 PUT/POST 请求可能存在问题。所以,我尝试在那里使用一些示例,这就是我最终得到的,但仍然无法正常工作。关于我在这里哪里出错的任何想法?经过验证的打印件,所以我知道我已经到了代理的地步。同步网关似乎可以处理 GET 请求。
谢谢
呃。我没有将 URL 的其余部分添加到 Sync Gateway 的转发地址。 post here 有帮助。
我正在尝试在 Couchbase SyncGateway 前构建一个反向代理。在将请求发送到同步网关之前,我想将它们发送到身份验证服务器进行身份验证,然后如果一切正常,将请求(未修改原始请求)发送到同步网关。数据库没有与客户端修改保持同步,我相信这是因为我没有成功代理 PUT/POST 请求。这是我的代码:
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}));
}
起初我使用的是快速服务器并且遇到了同样的问题。当我调查问题时,看起来 Express 和代理 PUT/POST 请求可能存在问题。所以,我尝试在那里使用一些示例,这就是我最终得到的,但仍然无法正常工作。关于我在这里哪里出错的任何想法?经过验证的打印件,所以我知道我已经到了代理的地步。同步网关似乎可以处理 GET 请求。
谢谢
呃。我没有将 URL 的其余部分添加到 Sync Gateway 的转发地址。 post here 有帮助。