在自定义端口上设置快速/节点SSL

有没有办法在Express上设置SSL的自定义端口? 这仅用于开发目的。 我在80/443上有一个Apache / PHP项目。

我试着按照这个教程http://www.hacksparrow.com/express-js-https.html

但老实说,我无法得到这个工作。 如果有人可以发布正确的方式来configurationExpress来做到这一点,那将是非常棒的。 这是我的服务器configuration:

var hskey = fs.readFileSync('mywebsite-key.pem'); var hscert = fs.readFileSync('mywebsite-cert.pem') var options = { key: hskey, cert: hscert }; //Create server var app = express(options); // Configure server app.configure(function () { //parses request body and populates request.body app.use(express.bodyParser()); //checks request.body for HTTP method overrides app.use(express.methodOverride()); //perform route lookup based on url and HTTP method app.use(app.router); //Where to serve static content app.use(express.static(path.join(application_root, 'public'))); //Show all errors in development app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); //Start server var port = nconf.get('port');; var server = require('http').createServer(app), io = require('socket.io').listen(server); server.listen(port, function () { console.log('Express server listening on port %d in %s mode', port, app.settings.env); }); 

       

网上收集的解决方案 "在自定义端口上设置快速/节点SSL"

您正在初始化服务器错误。 首先你使用require('http')作为服务器,所以它不会使用SSL选项。 其次,你是通过证书选项来expression,而不是https服务器。

你必须这样做:

 var hskey = fs.readFileSync('mywebsite-key.pem'); var hscert = fs.readFileSync('mywebsite-cert.pem') var options = { key: hskey, cert: hscert }; var express = require('express'), app = express() , https = require('https') , server = https.createServer(options,app) , io = require('socket.io').listen(server); // listen for new web clients: server.listen(8080);