代码之家  ›  专栏  ›  技术社区  ›  Orel Kevin Edry

结合cpanel的Nodejs-https

  •  0
  • Orel Kevin Edry  · 技术社区  · 6 年前

    我正试图让https在我的nodejs服务器上运行,如下所示:

    var http = require('http');
    var https = require('https');
    var fs = require('fs');
    var express = require('express');
    var privateKey  = fs.readFileSync('server.key', 'utf8');
    var certificate = fs.readFileSync('server.crt', 'utf8');
    
    var credentials = {key: privateKey, cert: certificate};
    var app = express();
    
    var httpServer = http.createServer(app);
    var httpsServer = https.createServer(credentials, app);
    
    httpServer.listen(8080, ()=> {
        console.log('Server started and listening on port 8080...')
    });
    httpsServer.listen(8443, ()=>{
        console.log('Server started and listening on port 8443...')
    });
    

    当我运行服务器时,只有http url在工作,https会超时。 知道为什么会这样吗?

    我习惯于使用cpanel,所以我已经在那里设置了ssl证书,但是当涉及到node时,我遇到了麻烦。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Zeeshan Tariq    6 年前

    似乎您的ssl文件有问题,您需要在创建如下https服务器时提供证书文件和私钥:

    var express = require('express');
    var https = require('https');
    var http = require('http');
    var fs = require('fs');
    
    // This line is from the Node.js HTTPS documentation.
    var options = {
      key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
      cert: fs.readFileSync('test/fixtures/keys/agent2-cert.cert')
    };
    
    // Create a service (the app object is just a callback).
    var app = express();
    
    // Create an HTTP service.
    http.createServer(app).listen(80);
    // Create an HTTPS service identical to the HTTP service.
    https.createServer(options, app).listen(443);
    

    希望有帮助。

        2
  •  0
  •   Orel Kevin Edry    6 年前

    问题是端口没有被转发。