您可以创建一个 HTTPS 服务器并传递私钥和证书,如下所示:
const fs = require('fs');
const https = require('https');
const express = require('express');
const app = express();
const options = {
key: fs.readFileSync('path/to/key', 'utf8'),
cert: fs.readFileSync('path/to/cert', 'utf8'),
};
const httpsServer = https.createServer(options, app);
httpsServer.listen(8443);
如果您根本不想响应 HTTP 请求,请不要创建 HTTP 服务器。如果您想将用户转发到 HTTPS,则可以添加如下内容:
const http = require('http');
app.use('*', (req, res, next) => {
if (!req.secure) {
const [ host ] = req.headers.host.split(':');
return res.redirect(`https://${host}:8443${req.url}`);
}
return next();
});
const httpServer = http.createServer(app);
httpServer.listen(8000);
或者您可以在反向代理级别处理此问题。例如。对于 Nginx:
server {
listen 80 default_server;
server_name _;
return 301 https://$host$request_uri;
}
}