80 と 443 の両方を開くように ELB を構成しました。ここで、443 は SSL で構成されています。どちらの ELB ポートも、インスタンスの 80 ポートを指しています。ELB の heatlh チェックは、ping ターゲット HTTP:80/index.html を使用しています。最近 http から https へのリダイレクトを開始することを決定するまで、以前は機能していました。
次のコードがserver.jsにあります(//内のコードは、新しく追加したコードです):
//
app.use(function(req, res, next) {
if (config.env === 'prod' && req.get('X-Forwarded-Proto') !== 'https') {
console.log("redirecting")
console.log('https://' + req.get('Host') + req.url)
res.set('X-Forwarded-Proto', 'https');
res.redirect('https://' + req.get('Host') + req.url);
}
else
next();
});
//
app.use(express.static(path.join(__dirname, 'home')));
app.set('trust proxy'); // enable this to trust the proxy
app.listen(app.get('port'), function() {
console.log('Express server listening on port ' + app.get('port'));
});
app.get("/*", function(req, res, next) {
res.sendFile(path.join(__dirname, 'home/index.html'));
});
上記のリクエストはすべてのリクエストを elb サーバーにリダイレクトしますが、https プロトコルを使用します。
ただし、サーバーは印刷を開始します。
redirecting
https://10.x.x.xx/index.html
そして、https://10.xxxx/inde.htmlが利用できないため、ELB は失敗します。
ただし、{domain}/ のすぐ下にある index.html の場所。
リダイレクト方法が間違っている可能性があると思いますが、修正方法がわかりません。