为nodejs服务器强制使用https

问题描述 投票:0回答:1

我在 Node.js 服务器上运行一个网站,并希望将所有 HTTP 请求重定向到 HTTPS。我怎样才能实现这个目标?

这是我现在的服务器:

import { handler } from './build/handler.js';
import fs from 'fs';
import http from 'http';
import https from 'https';

const options = {
  key: fs.readFileSync('insenouts_com.key'),
  cert: fs.readFileSync('insenouts_com.crt'),
  ca: fs.readFileSync('insenouts_com.ca-bundle')
};

const server = https.createServer(options, handler);

const port = process.env.PORT || 3000;
server.listen(port, () => {
  console.log(`Server is running on https://localhost:${port}`);
});


http.createServer((req, res) => {
  res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url });
  res.end();
}).listen(80, () => {
  console.log('HTTP Server running on port 80 and redirecting to HTTPS');
});

我希望使用 HTTP 向我的网站发出的任何请求都会自动重定向到 HTTPS。具体来说:

当用户尝试访问 http://mywebsite.com 时,他们应该被重定向到 https://mywebsite.com。 HTTP 服务器应该侦听端口 80 并无缝处理重定向。

HTTP 到 HTTPS 重定向未按预期工作。尽管有上述代码,用户并没有被重定向到该网站的安全版本。

有人可以帮助我确定我可能做错了什么或提出改进建议以实现所需的重定向吗?

node.js
1个回答
0
投票

端口出现问题。不是代码本身

© www.soinside.com 2019 - 2024. All rights reserved.