首页 > 解决方案 > 如何在 Node JS 上将 http 重定向到 https

问题描述

我正在使用 nodejs 来处理我的服务器,并且上面有一个网站。

我最近设置了 SSL 并想将 http 重定向到 https 但无法做到。我在stackoverflow上尝试了所有批准的解决方案,但没有一个有效。

这是我的服务器应用程序:

const express = require('express');
const app = express();
const https = require('https');
const fetch = require('node-fetch');
const bcrypt = require('bcrypt');
const hogan = require('hogan.js');
const fs = require('fs');

const optionSSL = {
    key: fs.readFileSync("./etc/ssl/myssl.pem"),
    cert: fs.readFileSync("./etc/ssl/myssl.crt")
};

//app.listen(80, () => console.log("Listening at 80"));
app.use(express.static('public', {
    extensions: ['html', 'htm'],
}));

app.use(express.json({limit: '1mb'}));
app.use(express.urlencoded({ extended: false }));

https.createServer(optionSSL, app).listen(443, "mydomain.com");

我尝试过的事情:

使用 node.js/express 自动 HTTPS 连接/重定向

将nodejs express静态请求重定向到https

您如何在 Node.js 中遵循 HTTP 重定向?

标签: javascriptnode.jshttphttps

解决方案


https.createServer(optionSSL, app).listen(443, "mydomain.com");

您正在侦听端口 443,这是 HTTPS 端口。

如果你想从 HTTP 重定向,那么你需要监听 HTTP 端口(而不是附加证书)。

最简单的方法是在端口 80 上运行一个完全不同的服务器(专用于执行重定向)。您可以在 Node.js 中编写一个,或者您可以使用现成的东西,如 nginx 或 lighttpd。


推荐阅读