[英]How to redirect http to https on a AWS EC2 instance running a node server.
[英]Redirect http requests to https for website hosted on AWS EC2
設置:Domain在Godaddy上購買,網站托管在nodejs環境中的AWS EC2實例中。 (也購買SSL用於https)
問題:我使用以下代碼設置了SSL:
var https = require('https');
var http = require('http');
const config = require('./config');
const fs = require('fs');
var app = express();
var redirectApp = express();
var options = {
key: fs.readFileSync(config.sslKeyPath),
cert: fs.readFileSync(config.sslCertPath),
ca: fs.readFileSync(config.sslCaPath)
};
var server = https.createServer(options, app);
var redirectServer = http.createServer(redirectApp);
redirectApp.use(function requireHTTPS(req, res, next) {
if (!req.secure) {
return res.redirect('https://www.domain.com'+ req.url);
}
next();
});
server.listen(httpsport, function() {
console.log("Listening on " + port);
});
redirectServer.listen(httpport, function() {
console.log("Listening on " + port);
});
部署后,我可以訪問https://www.domain.com和https://domain.com,但是http://www.domain.com或http://domain.com的請求沒有轉發到https版本。 (服務器錯誤)。 請提供解決方案以解決此問題。 我嘗試將域轉發到Godaddy中的https版本,這沒有用。
這將對所有請求強制使用https。 您可能希望將其放在前面,以檢查“ dev”或“生產”環境變量。
app.use(function(req, res, next) {
if ((req.get('X-Forwarded-Proto') !== 'https')) {
res.redirect('https://' + req.get('Host') + req.url);
} else
next();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.