Я искал stackoverflow и экспресс-группу Google, но у меня все еще не хватает.
Из того, что я понял, я могу сделать одну из двух вещей:
1)создайте экземпляр http-сервера и https-сервера и настройте их на прослушивание двух разных портов.В маршрутах перенаправьте запрос http на порт https.
//app
var app = express.createServer();
var app_secure = express.createServer({key: key, cert: cert});
app.listen(8080);
app_secure.listen(8443);
//routes
app.get("unsecure/path", function(req, res) {
...
}
app.get("secure/path", function(req, res) {
res.redirect("https://domain" + req.path);
}
app_secure.get("secure/path", function(req, res) {
res.send("secure page");
}
2) делайте то, что говорит TJ Hollowaychuk: https://gist.github.com/1051583
var http = require("http");
var https = require("https");
var app = express.createServer({key: key, cert: cert});
http.createServer(app.handle.bind(app)).listen(8080);
https.createServer(app.handle.bind(app)).listen(8443);
Когда я делаю 1, обычно естьНет проблем.Тем не менее, мне неудобно управлять двумя серверами, и я действительно считаю, что должен быть лучший способ.
Когда я делаю 2, я получаю следующее:
(узел SSL) ошибка: 1408A0C1:Подпрограммы SSL: SSL3_GET_CLIENT_HELLO: нет общего шифра
Конечно, я могу просто использовать вариант 1 по умолчанию, но я действительно очень хочу знать, почему я получаю «ошибку общего шифра», когда делаю вариант 2И вариант 2 будет моим предпочтительным маршрутом.