1

我想用node-proxy. 考虑到我有一个启动并运行的从属脚本,它在 unix-socket 上进行侦听:/tmp/node-http/cubixcraft.de 当我想使用以下脚本将它加载到我的节点代理中时,它根本不起作用。网页没有响应。

var fs = require("fs"),
    httpProxy = require("http-proxy");

var options = {
    hostnameOnly: true,
    router: {
        "cubixcraft.de": "/tmp/node-http/cubixcraft.de"
    }
};

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

当我使用普通端口而不是套接字路径时,一切正常。我什至在成功完成的套接字路径上发出了一个 get 请求。这条路真的很管用。节点代理似乎有问题。

有人遇到同样的问题吗?

4

2 回答 2

0

我最近想做类似的事情,但是根据这里的开放 github 问题http://github.com/nodejitsu/node-http-proxy/issues/104还不可能。

于 2012-05-29T02:40:02.953 回答
0

正如zi42 指出的那样,这种行为是一个错误。我深入研究了代码并发现他们不关心套接字。没有一行处理socketsPaths。

由于很长一段时间没有人回应这个问题,我自己修复了它。你可以在这里找到结果。这是一个包含socketPath's 的包装模块。我会提出一个拉取请求,这样socketPaths 很快就会默认工作。

下面的例子展示了如何使用它。我假设您有一个 HTTP 服务器正在侦听套接字“/tmp/node-http/myserver.com”。

var httpProxy = require("./fixed-http-proxy.js"); // This assumes that you have my .js in your cwd and http-proxy installed as a module (npm install http-proxy)

console.log(httpProxy);
var options = {
    hostnameOnly: true,
    router: {
        "myserver.com": "/tmp/node-http/myserver.com" // Sockets are determined by a leading slash
    }
};

var proxyServer = httpProxy.createServer(options).listen(80); // myserver.com:80 now internally proxies to /tmp/node-http/myserver.com
于 2012-05-29T14:01:25.560 回答