侦听单个 Express 应用程序的 HTTP 和 HTTPS [英] Listen on HTTP and HTTPS for a single express app

查看:26
本文介绍了侦听单个 Express 应用程序的 HTTP 和 HTTPS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我可以创建一个同时监听 HTTP 和 HTTPS 的 Express 服务器,使用相同的路由和相同的中间件吗?

目前我在 HTTP 上使用 Express 执行此操作,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(选项,功能(请求,资源){app.handle( req, res );} ).听(443);

解决方案

您可以通过以下方式共享实现:

var register = function (app) {//配置中间件应用程序配置({});//配置路由app.get(...);};var http = express.createServer();注册(http);http.listen(80);var https = express.createServer({ key:/* https 属性 */});注册(https);https.listen(443);

Can I create an Express server listening on both HTTP and HTTPS, with the same routes and the same middlewares?

Currently I do this with Express on HTTP, with stunnel tunneling HTTPS to Express, but I prefer a pure Node solution.

I can do it with this code, but using the handle method that is marked as private:

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

解决方案

You can share the implementation via something like:

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

这篇关于侦听单个 Express 应用程序的 HTTP 和 HTTPS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆