在一个express应用中监听HTTP和HTTPS

16 浏览
0 Comments

在一个express应用中监听HTTP和HTTPS

我能否创建一个同时监听HTTP和HTTPS的Express服务器,拥有相同的路由和中间件?

目前我使用Express在HTTP上实现了这一点,使用stunnel将HTTPS隧道转发给Express,但我更喜欢一个纯Node的解决方案。

我可以使用下面的代码来实现,但是它使用了被标记为私有的handle方法:

var express = require('express'),

https = require("https"),

fs = require('fs');

var app = express.createServer();

// 初始化路由和中间件

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);

0