ELB가 SSL을 사용하도록 구성된 80 및 443을 열도록 ELB를 구성했습니다. 두 ELB 포트 모두 인스턴스의 80 포트를 가리 킵니다. ELB의 히트 체크는 ping 대상 HTTP : 80/index.html을 사용하고 있습니다. 최근에 http를 https로 리디렉션하기로 결정하기 전까지는 작동하지 않았습니다.AWS 뒤의 NodeJS ELB에서 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
그리고 다음 ELB가 https://10.x.x.xx/inde.html으로 실패하는 것은 사용할 수 없습니다.
그러나 {domain}/아래의 index.html 위치.
리디렉션 방식이 잘못되었을 수 있다고 생각합니다. 그러나 문제를 해결할 방법이 없습니다.
나는이 같은 헤더 모든 요청을 설정합니다 생각? 이 헤더가없는 요청 만이이 줄에 들어갈 수 있습니까? – jamesdeath123
SSL과 관련하여 - 현재 http : // {domain} 및 https : // {domain} 모두 작동합니다. 단지 http : {도메인}이 보호 기능을 가지지 않을 것입니다. SSL은 결국 ELB에서 이루어지며 결국 EC2의 포트 80에 대한 모든 요청을 처리하게됩니다. – jamesdeath123
'x-forwarded-proto' 헤더의 전체적인 점은로드 밸런서가이를 설정하게하는 것입니다. 왜 그것을 서버에서 오버라이드하고 싶습니까? 리다이렉트를 발행하기 직전에 요청에 설정하면 요청을 버리기 때문에 아무 것도 수행하지 못합니다. –