我正在尝试使用自签名证书在Node.JS v0.10.24中创建HTTPS代理服务器。这是我正在使用的代码:
var https = require('https');
var server = https.createServer({
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
});
server.on('request', function(req, res) {
res.end('hello');
});
server.listen(8080);
该服务器正确启动,可以通过
https://localhost:8080
访问。但是,当我将其设置为HTTPS代理(在Mac OS X上)时,服务器发出connection
事件,但从不发出request
或error
,从而导致连接无限期挂起并最终超时。 最佳答案
我在Macbook上遇到了同样的问题。问题似乎是OSX中的代理服务器选项正在使用HTTP CONNECT方法来隧道HTTPS请求。
简而言之,这意味着您需要使服务器成为http.Server
实例并处理connect事件,该事件将涉及转发TCP套接字流量。
我知道这个回复有点晚,但是我写了我自己的HTTP / S代理服务器,您可以参考一下:https://github.com/robu3/purokishi。涵盖connect
方法的特定部分是here。