簡體   English   中英

將AWS EC2上托管的網站的http請求重定向到https

[英]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.comhttps://domain.com,但是http://www.domain.comhttp://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM