Redirecionar http para https express.js

Estou tentando redirecionarhttp (80) parahttps (443) no meu aplicativo expresso. Estou usando alguns utensílios intermediários para fazer isso. Se eu for ao meuhttps://my-example-domain.com, tudo está bem. Mas se eu for parahttp://my-example-domain.com não redireciona e nada aparece.

Eu também configurei algumas iptables no meu servidor ubuntu

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);

Então, minha pergunta é: eu só preciso adicionar outroiptables regra? Ou preciso configurar algo no meu aplicativo?

Portanto, com base em uma resposta abaixo, não acho que seja um problema de middleware, mas uma questão de porta. Por exemplo: se eu for parahttp://my-example-domain.com, não funciona. Mas se eu adicionar a porta 8443,http://my-example-domain.com:8443, ele redireciona bem.

questionAnswers(6)

yourAnswerToTheQuestion