gpt4 book ai didi

node.js - 将 AWS EC2 上托管的网站的 http 请求重定向到 https

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:25 24 4
gpt4 key购买 nike

设置:域是在 Godaddy 购买的,网站托管在 nodejs 环境中的 AWS EC2 实例中。 (SSL也是为了https目的而购买的)

问题:我使用以下代码设置了 SSL:

var https = require('https');
var http = require('http');
const config = require('./config');
const fs = require('fs');

var app = express();
var redirectApp = express();

var options = {
key: fs.readFileSync(config.sslKeyPath),
cert: fs.readFileSync(config.sslCertPath),
ca: fs.readFileSync(config.sslCaPath)
};

var server = https.createServer(options, app);
var redirectServer = http.createServer(redirectApp);

redirectApp.use(function requireHTTPS(req, res, next) {
if (!req.secure) {
return res.redirect('https://www.domain.com'+ req.url);
}
next();
});

server.listen(httpsport, function() {
console.log("Listening on " + port);
});

redirectServer.listen(httpport, function() {
console.log("Listening on " + port);
});

部署后,我可以访问 https://www.domain.comhttps://domain.com但是http://www.domain.comhttp://domain.com请求没有被转发到 https 版本。 (服务器错误)。请提供解决方案来解决这个问题。我尝试在 godaddy 中将域转发到 https 版本,但没有用。

最佳答案

这将强制对所有请求使用 https。您可能希望将 if 放在它前面以检查“开发”或“生产”环境变量。

    app.use(function(req, res, next) {
if ((req.get('X-Forwarded-Proto') !== 'https')) {
res.redirect('https://' + req.get('Host') + req.url);
} else
next();
});

关于node.js - 将 AWS EC2 上托管的网站的 http 请求重定向到 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40785393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com