Ecoutez sur HTTP et HTTPS pour une seule application express
Puis-je créer un Express server écoute sur HTTP et HTTPS, avec les mêmes itinéraires et les mêmes middlewares?
Actuellement je le fais avec Express sur HTTP, avec stunnel de tunnel HTTPS Exprimer, mais je préfère un pur Nœud solution.
Je peux le faire avec ce code, mais à l'aide de la handle
méthode est marqué comme privé:
var express = require( 'express' )
, https = require("https")
, fs = require( 'fs' );
var app = express.createServer();
//init routes and middlewares
app.listen( 80 );
var privateKey = fs.readFileSync( 'privatekey.pem' ).toString();
var certificate = fs.readFileSync( 'certificate.pem' ).toString();
var options = {key: privateKey, cert: certificate};
https.createServer( options, function(req,res)
{
app.handle( req, res );
} ).listen( 443 );
- Répondu succinctement ici: stackoverflow.com/a/23894573/1882064
Vous devez vous connecter pour publier un commentaire.
Vous pouvez partager la mise en œuvre par quelque chose comme:
Comme une possible mise à jour à cette question, vous pourriez vouloir vérifier les changements ici express 3. Le document de changement de dit:
En Express 3,
express.createServer()
est maintenantexpress()
Voici un exemple complet pour exprimer 3:
Pour permettre à votre application pour écouter les deux
http
ethttps
sur les ports80
et443
respectivement, procédez de la manière suivanteCréer un express app:
L'application retourné par
express()
est une fonction JavaScript. Il peut être transmis à Nœud serveurs HTTP comme un rappel pour traiter les demandes. Cela rend plus facile de fournir à la fois les protocoles HTTP et HTTPS versions de votre application en utilisant la même base de code.Vous pouvez le faire comme suit:
Pour le détail voir le doc
Vous pouvez utiliser express et https dans le même port.
cela fonctionne pour moi.
Poste similaire
Puis-je configurer expressjs servir des pages sur http et d'autres sur https?
Être conscient qui expriment désormais en charge la création de serveurs Https avec:
Si vous souhaitez utiliser les deux ports, l'une des solutions ci-dessus ne fonctionne probablement, mais à l'aide de httpolyglot, vous pouvez vraiment très facilement de http et de https sur le port avec la même middlewares.
https://github.com/mscdex/httpolyglot
Voici un squelette de code qui a fonctionné pour moi:
et si vous souhaitez http -> redirection https, vous pouvez simplement ajouter cette middleware fonction avant la createServer() appel:
Cela peut être réglé sur un port personnalisé