我正在尝试使用自签名证书在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
,从而导致连接无限期挂起最终超时。
答案 0 :(得分:1)
我在Macbook上遇到了同样的问题。问题似乎是OSX中的代理服务器选项使用HTTP CONNECT方法来隧道传输HTTPS请求。
简而言之,这意味着您需要使服务器成为http.Server
实例并处理connect事件,这将涉及转发TCP套接字流量。
我知道这个回复有点晚了,但我编写了自己的HTTP / S代理服务器,您可以查看以供参考:https://github.com/robu3/purokishi。涵盖connect
方法的具体部分为here。