我在尝试使用 http-proxy 路由到 localhost 时遇到了麻烦。
我正在使用 IISNODE,但来自控制台应用程序也无法正常工作。
例如,如果“target”设置为 google,它也适用于在此代码段中创建的 local:9000,但不适用于在我的本地 IIS 中运行的站点
有任何想法吗?
更新:现在发布的代码片段对我有用,但仍然缺少很多工作。
var port = process.env.PORT;
var http = require('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://myapp';
if (!req.url.toString().startsWith('/')) {
target = target + '/';
}
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.web(req, res, {
host: urlObj.host,
target: target,
enable: { xforward: true }
});
});
httpServer.listen(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;
};