nodejs:搭建express 服务,http服务重定向到https服务

18 篇文章 0 订阅
var plug_express = require('express');
var fs = require('fs');
var http = require('http');
var https = require('https');
var app = plug_express();

var PORT = 80;
var SSLPORT = 443;

app.set('port', SSLPORT);

// 登录网站
app.get('/', function(req, res, next) {
    let host = req.headers.host;
    host = host.replace(/\:\d+$/, '');
    if (!req.cookies.token || req.cookies.token == '0' || req.cookies.token == 'null') {
        if (req.protocol === 'https') {
            return res.redirect(`/login`);
        } else {
            if (SSLPORT == 443) {
                return res.redirect(307, `https://${host}/login`);
            } else {
                return res.redirect(307, `https://${host}:${SSLPORT}/login`);
            }
        }
    } else {
        if (req.protocol === 'https') {
            return res.redirect(`/sa_sec/main_page`);
        } else {
            if (SSLPORT == 443) {
                return res.redirect(307, `https://${host}/sa_sec/main_page`);
            } else {
                return res.redirect(307, `https://${host}:${SSLPORT}/sa_sec/main_page`);
            }
        }
    }
    next()
});

function func_startHTTP() {

    var httpServer = http.createServer(app);

    httpServer.listen(PORT, '0.0.0.0', function() {
        console.log('HTTP Server is running on: http://localhost:%s', PORT);
    });
    // httpApp.get('/', function(req, res, next) {
    //     if (req.protocol == 'http') {
    //         let host = req.headers.host;
    //         host = host.replace(/\:\d+$/, ''); // Remove port number
    //         res.redirect(302, `
    // https: //${host}${req.path}`);
    //     }
    // });
    // if (req.protocol == 'http') {
    //     let host = req.headers.host;
    //     host = host.replace(/\:\d+$/, ''); // Remove port number
    //     res.redirect(302, `https://${host}${req.path}`);
    // }
    // app.get('/', function(req, res, next) {
    //     let host = req.headers.host;
    //     host = host.replace(/\:\d+$/, ''); // Remove port number
    //     res.redirect(`https://${host}${req.path}`);
    // });
    // app.all("*", (req, res, next) => {
    //     let host = req.headers.host;
    //     host = host.replace(/\:\d+$/, ''); // Remove port number
    //     res.redirect(307, `https://${host}${req.path}`);
    // });
}

// 开启HTTPS服务
function func_startHTTPS() {
    //TODO 
    var privateKey = fs.readFileSync('./static/cert/server.key', 'utf8');
    var certificate = fs.readFileSync('./static/cert/server.crt', 'utf8');
    var credentials = { key: privateKey, cert: certificate };
    var httpsServer = https.createServer(credentials, app);
    httpsServer.listen(app.get('port'), '0.0.0.0', function() {
        console.log('HTTPS Server is running on: https://localhost:%s', app.get('port'));
    });
    httpsServer.on('error', (e) => {
        console.error(e);
    });
    //404
    app.get('*', function(req, res, next) {
        var key = req.url;
        console.log(key.substr(1, 13))
        //TODO
        if (!~~~) {
            res.redirect('/404');
        }
        next()
    });
}

function startServer() {
    func_startHTTP();
    func_startHTTPS();
}

startServer();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千码君2016

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值