是否可以创建具有相同路由和相同中间件的,同时侦听HTTP和HTTPS的Express服务器?
目前,我在高速上的HTTP做到这一点,有安全通道隧道HTTPS来表达,但我更喜欢一个纯粹的节点解决方案。
我可以使用以下代码来做到这一点,但是可以使用handle标记为私有的方法:
handle
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 );
您可以通过以下方式共享实现:
var register = function (app) { // config middleware app.configure({ }); // config routes app.get(...); }; var http = express.createServer(); register(http); http.listen(80); var https = express.createServer({ key: /* https properties */ }); register(https); https.listen(443);