我正在尝试将某些子域重定向到我的 ubuntu AWS EC2 虚拟服务器上的特定端口。已经尝试过使用 DNS,但根据以下主题,使用 node-http-proxy 的默认路由将无法正常工作?以及如何使用 node.js http-proxy 在计算机中记录 HTTP 流量?,我试图创建一个带有日志记录的 Node.JS 代理服务器。也就是说,我将它混合在一起(我是 Node.JS 的新手,仍在学习)并制作了以下脚本:
var httpProxy = require('http-proxy');
var PORT = 80;
logger = function() {
return function (request, response, next) {
// This will run on each request.
console.log(JSON.stringify(request.headers, true, 2));
next();
}
}
var options = {
// this list is processed from top to bottom, so '.*' will go to
// 'http://localhost:3000' if the Host header hasn't previously matched
router : {
'dev.domain.com': 'http://localhost:8080',
'beta.domain.com': 'http://localhost:8080',
'status.domain.com': 'http://localhost:9000',
'health.domain.com': 'http://localhost:9000',
'log.domain.com': 'http://localhost:9615',
'^.*\.domain\.com': 'http://localhost:8080',
'.*': 'http://localhost:3000'
}
};
// Listen to port 80
httpProxy.createServer(logger(), options).listen(PORT);
console.log("Proxy server started, listening to port" + PORT);
那么发生的事情是我不断收到以下错误并且无法弄清楚如何让它工作:
$node proxyServer.js
Proxy server started, listening to port80
events.js:72
throw er; // Unhandled 'error' event
^
Error: listen EACCES
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at Server.listen (net.js:1138:5)
at ProxyServer.listen (/home/ubuntu/QuantBull-Project/node_modules/http-proxy/lib/http-proxy/index.js:130:16)
at Object.<anonymous> (/home/ubuntu/QuantBull-Project/proxyServer.js:28:43)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
简而言之,我试图在端口 80 上接收 http 请求,如果它来自 sub1.domain.com,它将被重定向到 portA,如果它来自 sub2.domain.com,它将从同一个 IP 重定向到 portB地址和两个端口都对公众开放。
有人可以解释如何解决这个问题并解释它为什么会发生吗?