首页 > 解决方案 > https 路由到节点 js 生产

问题描述

我有一个在 kinghost.com 主机上运行的 nodejs 应用程序,它启用了我们将加密的 SSL,但我的应用程序仍然不能仅通过 http 响应 https。我在应用程序中进行了以下设置,以便将请求转换为 https,但它不起作用。有人可以告诉我该怎么做,我错了,举个例子。我不知道还能做什么。

文件 app.js

app.set('port', process.env.PORT || 21019);
app.listen(app.get('port')); 

app.use(function(req, res, next) {
    if ((req.get('X-Forwarded-Proto') !== 'https')) {
        res.redirect('https://' + req.get('Host') + req.url);
    } else
    next();
});

完整的 app.js 文件

var express           = require('express');
var session           = require('express-session');
var cookieParser      = require('cookie-parser');
var bodyParser        = require('body-parser');
var logger            = require('morgan');
var path              = require('path');
var fileUpload        = require('express-fileupload');

var https             = require('https');

var app               = express();
var expressValidator  = require('express-validator');
var passport          = require('passport');
var flash             = require('connect-flash');

// - Cria rotas
var routes            = require('./routes/index');
var usuarios          = require('./routes/usuario');
var motorista         = require('./routes/motorista');
var login             = require('./routes/login');
var aluno             = require('./routes/aluno');
var contrato          = require('./routes/contrato');
var boleto            = require('./routes/boleto');
var pessoa            = require('./routes/pessoa');

require('./security/autenticacao')(passport);

app.use(logger('dev'));
app.use(expressValidator());
app.use(cookieParser());
app.use(bodyParser.json({limit: "50mb"}));
app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));
app.use(express.static(path.join(__dirname, 'public')));
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(session({
    secret: 'reis&turlwaysrunning',
    resave: true,
    saveUninitialized: true
 } ));
app.use(logErrors);
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
app.use(function (req, res, next) {
    res.locals.login = req.user;
    next();
});
app.use(fileUpload());

app.set('port', process.env.PORT || 21019);
app.listen(app.get('port')); 

app.use(function(req, res, next) {
    if ((req.get('X-Forwarded-Proto') !== 'https')) {
        res.redirect('https://' + req.get('Host') + req.url);
    } else
    next();
});

// Atriui rotas
app.use('/home', routes);
app.use('/usuarios', usuarios);
app.use('/alunos', aluno);
app.use('/motoristas', motorista);
app.use('/contratos', contrato);
app.use('/login', login);
app.use('/boletos', boleto);
app.use('/pessoas', pessoa);

//app.listen(port);

function logErrors (err, req, res, next) {
    console.error('Troxa: ' + err.stack)
    next(err)
  }

module.exports = app;

我也试过了,但没有用

文件 app.js

https.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('Hello World!');
    res.end();
  }).listen(21019);

完整的 app.js 文件

    var express           = require('express');
    var session           = require('express-session');
    var cookieParser      = require('cookie-parser');
    var bodyParser        = require('body-parser');
    var logger            = require('morgan');
    var path              = require('path');
    var fileUpload        = require('express-fileupload');

    var https             = require('https');

    var app               = express();
    var expressValidator  = require('express-validator');
    var passport          = require('passport');
    var flash             = require('connect-flash');

    // - Cria rotas
    var routes            = require('./routes/index');
    var usuarios          = require('./routes/usuario');
    var motorista         = require('./routes/motorista');
    var login             = require('./routes/login');
    var aluno             = require('./routes/aluno');
    var contrato          = require('./routes/contrato');
    var boleto            = require('./routes/boleto');
    var pessoa            = require('./routes/pessoa');

    require('./security/autenticacao')(passport);

    app.use(logger('dev'));
    app.use(expressValidator());
    app.use(cookieParser());
    app.use(bodyParser.json({limit: "50mb"}));
    app.use(bodyParser.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));
    app.use(express.static(path.join(__dirname, 'public')));
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'ejs');
    app.use(session({
        secret: 'reis&turlwaysrunning',
        resave: true,
        saveUninitialized: true
     } ));
    app.use(logErrors);
    app.use(passport.initialize());
    app.use(passport.session());
    app.use(flash());
    app.use(function (req, res, next) {
        res.locals.login = req.user;
        next();
    });
    app.use(fileUpload());

    https.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.write('Hello World!');
    res.end();
  }).listen(21019);

    // Atriui rotas
    app.use('/home', routes);
    app.use('/usuarios', usuarios);
    app.use('/alunos', aluno);
    app.use('/motoristas', motorista);
    app.use('/contratos', contrato);
    app.use('/login', login);
    app.use('/boletos', boleto);
    app.use('/pessoas', pessoa);

    //app.listen(port);

    function logErrors (err, req, res, next) {
        console.error('Troxa: ' + err.stack)
        next(err)
      }

标签: node.jsexpress

解决方案


您可以尝试使用 express 实现 https 的方法,如在 express.js 上启用 HTTPS所示?


推荐阅读