Хорошо. У меня есть экспресс-приложение, которое также использует Socket.io и отлично работает через HTTP. Однако теперь мне нужно перейти на HTTPS. Nodejitsu предоставляет много документации по этому вопросу. Они предлагают использовать node-http-proxy (https://github.com/nodejitsu/node-http-proxy). Отлично!
Из кода для HTTP:
var server = http.createServer(app) // app is an Express instance
server.listen(config.port,config.hostip) // config.port is 80 for localhost and 3000 for Nodejitsu, config.hostip is 127.0.0.1 for localhost and 0.0.0.0 for Nodejitsu
Я получил это:
var server = http.createServer(app)
var options = {
https: {
key: fs.readFileSync(__dirname+"/ssl/privatekey.pem", 'utf8'),
cert: fs.readFileSync(__dirname+"/ssl/certificate.pem", 'utf8')
}
}
httpProxy.createServer(config.port, config.hostip, options).listen(3001,config.hostip)
var proxy = new httpProxy.HttpProxy({
target: {
host: config.hostip,
port: config.port
}
})
https.createServer(options.https, function (req, res) {
proxy.proxyRequest(req, res)
}).listen(3002,config.hostip)
server.listen(config.port,config.hostip)
Когда я, наконец, развертываю (во время развертывания ошибок нет), я захожу на страницу и вижу, что 502 error Socket зависает. Хорошо, я могу сделать что-то не так, поэтому просто скопирую и вставлю пример с https://github.com/nodejitsu/node-http-proxy «Проксирование HTTP из HTTPS», чтобы проверить, работает ли это. Но это не так - ошибка 502.
Тем не менее, он отлично работает на моем локальном хосте. Я также пытался запустить автономный HTTPS-сервер без node-https-proxy, но безуспешно. Помогите пожалуйста, уже неделю не могу решить.