我想和node-proxy
做一些vhost-jiggery-pokery。考虑到我有一个启动并运行的slave脚本,它会监听unix-socket:/tmp/node-http/cubixcraft.de
当我想使用以下脚本将其加载到我的node-proxy中时,它根本不起作用。网页没有回复。
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请求。这条路真的有效。节点代理似乎有问题。
有人遇到同样的问题吗?
答案 0 :(得分:0)
我最近想做类似的事情,但根据这里的开放github问题http://github.com/nodejitsu/node-http-proxy/issues/104,这还不可能。
答案 1 :(得分:0)
作为zi42 pointed out,这种行为是一个错误。我深入研究了代码并发现,他们并不关心套接字。没有一行可以处理socketsPath
s。
由于很长时间没有人对issue做出回应I fixed it myself。您可以找到结果here。这是一个包含socketPath
的包装模块。我会制作一个pull request,以便socketPath
很快就可以使用。
以下示例显示了如何使用它。我假设您有一个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