【发布时间】:2022-01-10 17:11:04
【问题描述】:
我有一个使用 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 不能。
【问题讨论】:
标签: node.js amazon-web-services https ssl-certificate amazon-elastic-beanstalk