Http to Https redirect does not work on NodeJs in AWS Elastic Beanstalk

Multi tool use
Multi tool use


Http to Https redirect does not work on NodeJs in AWS Elastic Beanstalk



I created a project using MEAN stack.
In project without redirecting http to https (via app.use("/", httpsRedirect(true)); ) I can access the website without problem.
But after redirecting and deploying I cannot access the website (Timed out).
here code of server.js


const httpsRedirect = require('express-https-redirect');
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const userRoutes = require("./routes/user.routes");
const qrRoutes = require("./routes/qr.routes");
const app = express();
const mongoose = require('mongoose');
const path = require('path');
mongoose
.connect(
"mongodb://username:mypassword@ds217671.mlab.com:17671/mean_qr_scanner"
)
.then(() => {
console.log("Connected to database!");
console.log("3");
})
.catch((er) => {
console.log(er);
});
app.use("/", httpsRedirect(true)); // this cause issue when accessing websit

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors());
app.use("/", express.static(path.join(__dirname, "angular")));
app.use("/api/user", userRoutes);
app.use("/api/qr", qrRoutes);
app.use((req, res, next) => {
res.sendFile(path.join(__dirname, "angular", "index.html"));
});
module.exports = app;



also tried manual solution for http to https redirect: (same issue)


app.use(function ensureSecure(req, res, next){
if(req.secure){
// OK, continue
return next();
}
// handle port numbers if you need non defaults
res.redirect('https://' + req.hostname + req.url); // express 4.x
});



Strange is AWS BEAN Stalk shows HEALTH is GREEN.
What causes issue? Any idea?
Thanks in advance !




1 Answer
1



To redirect http traffic to https, you should not only configure your application code but Elastic Beanstalk. If your are using Load balancer environment type, you should also concern to configuration of ELB.



Here are some official reference for you:
* Terminating HTTPS on EC2 Instances Running Node.js - https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-singleinstance-nodejs.html
* Configuring HTTPS for your Elastic Beanstalk Environment - https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https.html






By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

cT V Kf,O7X,qYD c4u9sRUiyMe5d Aa6How KBRlxcE,0cWA,GFkI,eFZfZttsQg,RgtjbXcB82DMWE,vmPWseeQF
p,x ZpFvv xcHarARZJi66e7,AqB9YqVMvvdVP

Popular posts from this blog

PHP contact form sending but not receiving emails

Do graphics cards have individual ID by which single devices can be distinguished?

Create weekly swift ios local notifications