我正在尝试使用 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.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);
});
代理可以在任何需要50.56.195.215:8000
HTTP 和50.56.195.215:8001
SSL 的地方使用。它没有任何安全性,所以不要登录任何重要的东西=D
我正在使用自签名 SSL 证书,我想尝试做这样的事情有点愚蠢,但我没有任何想法:P