【问题标题】:Using Node.js, can we map one domain / port (one origin) to two local web servers?使用 Node.js,我们可以将一个域/端口(一个源)映射到两个本地 Web 服务器吗?
【发布时间】:2016-06-02 14:14:59
【问题描述】:

我们的项目已经安装了 Node.js,并且我们运行了 2 个 Web 服务器,可通过以下方式访问:

http://127.0.0.1:8000
http://127.0.0.1:9000

但是,第二个网站需要对第一个服务器进行 AJAX,而跨域策略会阻止这种情况。使用 Node.js(可能是 http-server),我们可以映射吗:

http://127.0.0.1:8080/datahttp://127.0.0.1:8000

并将其他所有内容映射到

http://127.0.0.1:8080http://127.0.0.1:9000

只用几行?

【问题讨论】:

  • 理想情况下,您正在寻找代理。您可以使用 nginx 或 HAProxy 之类的反向代理,或者,如果您想要纯 node.js 解决方案,请使用 http-proxy-middleware 并在端口 8080 上启动服务器。

标签: node.js


【解决方案1】:

请尝试如下使用node http proxy

var proxyPort = 8080;
var http = require('http');
var httpProxy = require('http-proxy');

var options = {
    router: {
        'localhost': '127.0.0.1:9000',
    }
};

var proxyServer = httpProxy.createServer(options);
proxyServer.listen(proxyPort);

或者按照这个answer创建一个代理本机。

 var net = require('net');
// parse "80" and "localhost:80" or even "42mEANINg-life.com:80"
var addrRegex = /^(([a-zA-Z\-\.0-9]+):)?(\d+)$/; 
var addr = {
    from: addrRegex.exec(process.argv[2]),
    to: addrRegex.exec(process.argv[3])
};    
if (!addr.from || !addr.to) {
    console.log('Usage: <from> <to>');
    return;
}    
net.createServer(function(from) {
    var to = net.createConnection({
        host: addr.to[2],
        port: addr.to[3]
    });
    from.pipe(to);
    to.pipe(from);
}).listen(addr.from[3], addr.from[2]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多