Przeszukałem stackoverflow i ekspresową grupę google, ale wciąż mam mało.Jak skonfigurować program expressjs do obsługi zarówno protokołu http, jak i HTTPS?
Z czego wnoszę, mogę zrobić jedną z dwóch rzeczy:
1) Utwórz instancję serwera HTTP i serwera https i ustawić dwa słuchać dwóch różnych portów. Na trasach przekieruj żądanie http do portu 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) to, co mówi 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);
Kiedy zrobić 1, są na ogół żadnych problemów. Jednak czujesz się niezdolny do zarządzania dwoma serwerami i naprawdę uważam, że powinien istnieć lepszy sposób.
Kiedy zrobić 2, otrzymuję ten:
(węzeł SSL) błąd: 1408A0C1: podprogramów SSL: SSL3_GET_CLIENT_HELLO: nie podzielił szyfr
Oczywiście, mogę tylko domyślnie opcji 1, ale naprawdę, naprawdę chcę wiedzieć, dlaczego otrzymuję ten "brak współdzielonego błędu szyfrowania", kiedy robię opcję 2. A opcja 2 byłaby moją preferowaną trasą.
I skończył przy użyciu Nginx do obsługi protokołu SSL. @Benjie The cert is RSA. Podam Twoją sugestię w najbliższej przyszłości. Dzięki. – ant
Czy możesz wskazać, jak skonfigurowałeś nginx do obsługi ssl dla węzła? Dzięki – Mamsaac
Czy nie zrobiłeś tego, co powiedział TJ - prawie, ale nie do końca. Opcje https muszą przejść do serwera https, a nie do express.createServer. Wtedy to działa. Jednak uzyskanie go do pracy z serwerem websocket to zupełnie inna sprawa :) – youurayy