gpt4 book ai didi

node.js - 将 http 重定向到 https express.js

转载 作者:搜寻专家 更新时间:2023-10-31 22:57:46 24 4
gpt4 key购买 nike

我正在尝试在我的 Express 应用中将 http (80) 重新路由到 https (443)。我正在使用一些中间件来做到这一点。如果我转到我的 https://my-example-domain.com,一切都很好。但是,如果我转到 http://my-example-domain.com,它不会重定向,也不会显示任何内容。

我还在我的 ubuntu 服务器上设置了一些 iptables

sudo iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -i eth0 -p tcp --dport 8443 -j ACCEPT
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443




function requireHTTPS(req, res, next) {
if (!req.secure) {
return res.redirect('https://' + req.headers.host + req.url);
}
next();
}

// all environments
app.set('port', process.env.PORT || 8443);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.logger('dev'));
app.use(requireHTTPS); // redirect to https
app.use(express.json());
app.use(express.urlencoded());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));

app.get('/', function(req, res){
res.render('index');
})

https.createServer(options, app).listen(8443);

所以我的问题是我是否只需要添加另一个 iptables 规则?还是我需要在我的应用中配置一些东西?

所以根据下面的一个答案,我认为这不是中间件问题,而是端口问题。例如:如果我转到 http://my-example-domain.com , 不起作用。但是如果我添加端口 8443,http://my-example-domain.com:8443 ,它重定向正常。

最佳答案

var redirectApp = express () ,
redirectServer = http.createServer(redirectApp);

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

redirectServer.listen(8080);

关于node.js - 将 http 重定向到 https express.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22332442/

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