我有一個與 Classic Load Balancer 一起運行的 Elastic Beanstalk 應用程式。負載均衡器正在使用 ACM SSL 證書。NodeJS 應用程式在埠 8080 上運行 HTTP 服務器,當訪問該服務器時,重定向到在埠 3000 上運行的 HTTPS 服務器。但是,這似乎不起作用。兩個服務器都不會加載任何東西。目前,我的負載均衡器正在偵聽埠 80 并發送到實體埠 80,偵聽埠 443 并使用 ACM SSL 證書發送到實體埠 443。我應該如何配置我的 EB 應用程式、負載均衡器和 nodeJS 應用程式以使其作業?
編輯:作為 Elastic Beanstalk 應用程式的默認設定,還有一個 nginx 實體也在運行。我很遺憾沒有提到這一點。
根據@kgiannakakis 的建議,我的 nodeJS 應用程式現在如下:
var express = require('express');
var path = require('path');
var routes = require("./routes");
const port = process.env.PORT || 8080;
var app = express();
app.set('views', __dirname '/views');
app.set('view engine', 'pug');
app.set('port',port)
app.use(express.static(path.join(__dirname, 'public')));
app.enable('trust proxy')
app.use((req, res, next) => {
req.secure ? next() : res.redirect('https://' req.headers.host req.url)
})
function init() {
app.get('/', routes.index);
app.get("/ping", function(req, res){
res.send("Ok");
res.end();
});
app.listen(app.get('port'), () => {
console.log("App running on port %s.",app.get('port'));
});
}
init();
HTTP 請求可以正常作業,但是 HTTPS 不行。
uj5u.com熱心網友回復:
由于您擁有 ACM 證書,因此我假設您正在負載均衡器級別終止 SSL。這意味著負載均衡器和 Elastic Beanstalk 實體之間的通信將是未加密的。對于您的 Node.js 服務器,您只需要監聽代理埠 (8080)。詳細資訊在
另請注意,可以在實體處終止 SSL。這需要您自己的證書(不是通過 ACM)并正確配置 nginx。在此處閱讀詳細資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373686.html
