Node.js+;快速代理ssl
我正在尝试使用express在node.js中编写一个反向代理,它可以很好地处理http请求。问题是,当请求https时,它从未响应,并且浏览器声明代理拒绝连接。 以下是http请求的工作代码:Node.js+;快速代理ssl,node.js,ssl,proxy,express,Node.js,Ssl,Proxy,Express,我正在尝试使用express在node.js中编写一个反向代理,它可以很好地处理http请求。问题是,当请求https时,它从未响应,并且浏览器声明代理拒绝连接。 以下是http请求的工作代码: var app = express(), http=require('http'); app.configure(function(){ /* express stuff to log and use routes and the like */ }); http.createSer
var app = express(),
http=require('http');
app.configure(function(){ /* express stuff to log and use routes and the like */ });
http.createServer(app).listen(8000, function(){
console.log("Express server listening on port " + 8000);
});
app.all('*', proxy);
var request=require('request');
var proxy=function(req,resp){
var data={
url:req.url,
headers: {
'Connection': 'keep-alive'
}
}
var proxy=request(req.url);
proxy.pipe(resp);
}
现在,关于SSL,我正在尝试:
var https=require('https'),
fs=require('fs');
https.createServer({
key: fs.readFileSync(__dirname+'/ssl/server.key', 'utf8'),
cert: fs.readFileSync(__dirname+'/ssl/server.crt', 'utf8')
},app).listen(8001, function(){
console.log("Express server listening on port " + 8001);
});
代理可以在任何需要HTTP使用50.56.195.215:8000
,SSL使用50.56.195.215:8001
的地方使用。它没有任何安全性,所以不要登录任何重要的=D
我使用的是自签名SSL证书,我想尝试这样做有点傻,但我没有任何想法:p我的建议是使用Nodejitsu提供的现有库。如果你想自己写,至少要在学术上研究他们的源代码 关于上述方法的一些注意事项:
- 除了GET(POST、PUT、DELETE等)之外,您没有处理HTTP方法。这些都是存在的。如果希望代理实际工作,则必须处理它们。每次调用
,默认情况下,request(req.url)
都会发出GET请求request
如果您有任何问题,请告诉我。我愿意立即修复它们。虽然我同意node http proxy是一种解决方案,但他实际上是在用app.all()对这些方法进行全局化处理,在从代理发送请求时,他想使用的不是get,而是express。我没有注意到这一点,因为我还没有尝试过任何帖子。至于节点http代理。。。我正在考虑使用它,但我找不到一种方法使其作为透明代理工作:(因此,您不能让已知可用的现有项目安装并运行,但您希望自己编写一个项目,或者让stackoverflow帮助您编写另一个项目?也许是时候退后一步,重新评估您在这个项目上的位置了,但祝您好运!问题是node http proxy似乎没有这样做的能力()…它将请求从一个已知的服务器代理到另一个服务器,我想要一个透明的代理,将所有内容代理到服务器(我的意思是…调用google.com,发送到server,server requestos google.com并返回响应)您看过像squid这样的实际http代理(而不是反向代理)项目吗?