【问题标题】:error while using node proxy使用节点代理时出错
【发布时间】:2015-09-06 05:42:39
【问题描述】:

我正在使用以下程序,当我运行它时出现以下错误,我能够运行应用程序,但是当我输入浏览器 localhost:3000 时,我在控制台中收到此错误...

**Error: connect ECONNREFUSED**
    at exports._errnoException (util.js:746:11)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1000:19)

这是程序我有一个非常简单的节点应用程序,只有一个包含以下代码的文件(这是我的服务器/app/.js

var http = require('http'),
    httpProxy = require('http-proxy'),
    url = require('url');

proxy = httpProxy.createProxyServer({});

http.createServer(function (req, res) {



    switch (hostname) {
        case 'localhost':
            proxy.web(req, res, {target: 'http://localhost:9001'});
            break;

    }
}).listen(3005, function () {
    console.log('original proxy listening on port: ' + 3005);
});


http.createServer(function(req, res) {
    res.end("Request received on 9001");
}).listen(9056);

当用户点击某个 URL 时,我想启动新的代理服务器

我使用这个模块,我做错了什么?

https://github.com/nodejitsu/node-http-proxy

另一件事...当我使用此代码时出现错误...

process.on('uncaughtException', function (err) {
    console.log(err);
});

这是现在的错误,知道吗?

{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }
{ [Error: socket hang up] code: 'ECONNRESET' }

【问题讨论】:

    标签: javascript node.js express node-http-proxy


    【解决方案1】:
    http.createServer(function(req, res) {
        res.end("Request received on 9001");
    }).listen(9056);
    

    您的 HTTP 服务器正在侦听端口 9056。当无法建立连接时,代理尝试连接到错误端口上的 HTTP 服务器并引发错误。为避免将来出现此类错误,请将端口放入变量中:

    var PORT = 9001;
    http.createServer(function(req, res) {
        res.end("Request received on " + PORT);
    }).listen(PORT);
    

    【讨论】:

    • 非常感谢!投票赞成!,只是最后一个问题 :) 假设我想测试这是否真的按照您的建议工作?也许是一些单元测试或您能想到的其他东西...
    • 对这样一个简短的服务器脚本进行单元测试很痛苦,因为没有纯粹的、无副作用的函数。如果脚本不是正在进行的开发,我会说对每台服务器做出不同的响应,并使用 Web 浏览器进行测试。如果您可能会为此做一些更复杂的事情,那么自动化该过程可能是值得的。您可以使用适当的框架,例如 Protactor,但其中涉及学习曲线和设置过程。如果您想做一个简单的测试来完成它的工作,您可以使用不同的主机名标头发出 http 请求并检查响应
    • 您能否提供一些步骤来简单地测试它,我对这个主题非常陌生,我想以某种方式验证它是否有效......,非常感谢!
    • 例如:为每个 we-broxy 主机名切换案例制作 3 个服务器,就像您在最后几行中的那个一样。制作一个单独的脚本,向代理发出 3 个请求:一个带有“localhost”作为主机名标头,一个作为 127.0.0.1,一个带有其他内容。然后只需检查例如“localhost”,您就可以返回端口 9001 上运行的内容。可以在 http 请求的选项字段中设置标头。 docs.nodejitsu.com/articles/HTTP/clients/…
    • 我将其标记为答案,请您提供您的回放作为答案吗?您的意思是制作单独的3个脚本,您能否提供示例,非常感谢您的支持!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2021-04-12
    • 2019-01-16
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多