【发布时间】:2014-06-02 23:20:53
【问题描述】:
如何使用 node.js 中的 http-proxy 模块跟踪重定向,以便在浏览器中保持相同的 url?
我在反向代理后面有两个网站(A 和 B),用户通过 revere 代理完美访问站点 A,但是站点 A 到站点 B 中的站点 A 使浏览器中的 url 更改为站点B、它仍然应该在浏览器中显示反向代理 url
这是我当前的代码
var port = process.env.PORT;
var http = require('follow-redirects').http,
httpProxy = require('http-proxy'),
url = require('url');
// http Server
var proxy = new httpProxy.createServer({});
var httpServer = http.createServer(function (req, res) {
console.log('request received: ' + req.path);
var target = 'http://siteA/';
if (!req.url.toString().endsWith('/')) {
target = target + '/';
}
if (req.url.toString() != '/') {
target = target + req.url;
}
console.log('routing request to ' + target);
var urlObj = url.parse(req.url);
req.headers['host'] = urlObj.host;
req.headers['url'] = urlObj.href;
proxy.proxyRequest(req, res, {
host: urlObj.host,
target: target,
enable: { xforward: true }
});
});
httpServer.listen(port);
console.log("server listening at port: " + port);
String.prototype.endsWith = function (s) {
return this.length >= s.length && this.substr(this.length - s.length) == s;
}
String.prototype.startsWith = function (str) {
return this.indexOf(str) == 0;
};
【问题讨论】:
标签: javascript node.js proxy