Да, есть способ.Во-первых, создайте самозаверяющий сертификат:
openssl req -nodes -new -x509 -keyout server.key -out server.cert
Затем обслуживайте по HTTPS благодаря библиотеке HTTPS узла:
// imports
const express = require('express');
var fs = require('fs');
const http = require('http');
const https = require('https');
const app = require('./path/to/your/express/app');
// HTTPS server
const httpsServer = https.createServer({
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.cert')
}, app);
httpsServer.listen(443, () => console.log(`HTTPS server listening: https://localhost`));
Наконец, используйте минимальный HTTP-сервер для прослушивания запросов ктот же домен и перенаправляет их:
// redirect HTTP server
const httpApp = express();
httpApp.all('*', (req, res) => res.redirect(300, 'https://localhost'));
const httpServer = http.createServer(app);
httpServer.listen(80, () => console.log(`HTTP server listening: http://localhost`));
Это, конечно, минимальная настройка.Для производства вы будете использовать разные сертификаты и замените localhost
на динамическое доменное имя, которое вы сгенерируете из req
, и вы можете не захотеть использовать порты 80 и 443 и т. Д.
Связанные чтения: