2016-06-30 4 views
5

Ich aktiviere https-Anfragen zu meinem nodeJS Server. Aber ich möchte die gleichen Routen verwenden, die ich von HTTP-Anfragen mit dem 8080-Port zu meinem https mit diesem 443-Port erhalten kann.So verwenden Sie Routen von Express für HTTPS?

http://api.myapp.com:8080/api/waitlist/join erfolgreich https://api.myapp.com:443/api/waitlist/join ist nicht Was ich in den Code verpassen für httpsServer die gleichen Strecken wie für ‚App‘ zu benutzen?

var fs    = require('fs'); 
var https   = require('https'); 
var express   = require('express');  // call express 
var app    = express();    // define our app using express 
var bodyParser  = require('body-parser'); 
var mongoose  = require('mongoose'); 
var cors   = require('cors'); 
var config   = require('./config'); 

// Configure app to use bodyParser() 
[...] 
// Configure the CORS rights 
app.use(cors()); 

// Enable https 
var privateKey = fs.readFileSync('key.pem', 'utf8'); 
var certificate = fs.readFileSync('cert.pem', 'utf8'); 

var credentials = { 
    key: privateKey, 
    cert: certificate 
}; 

var httpsServer = https.createServer(credentials, app); 

// Configure app port 
var port   = process.env.PORT || config.app.port; // 8080 

// Configure database connection 
[...] 

// ROUTES FOR OUR API 
// ============================================================================= 

// Create our router 
var router = express.Router(); 

// Middleware to use for all requests 
router.use(function(req, res, next) { 
    // do logging 
    console.log('>>>> Something is happening. Here is the path: '+req.path); 
    next(); 
}); 

// WAITLIST ROUTES --------------------------------------- 
// (POST) Create Email Account --> Join the waitList 
router.route('/waitlist/join').post(waitlistCtrl.joinWaitlist); 
// And a lot of routes... 


// REGISTER OUR ROUTES ------------------------------- 
// All of our routes will be prefixed with /api 
app.use('/api', router); 



// START THE SERVER 
// ============================================================================= 
app.listen(port); 
httpsServer.listen(443); 

Vielen Dank!

Antwort

7

Mit dem API docs für .listen auf meinen eigenen Projekten mit ähnlichen Bedarf und an Ihrem Code suchen, glaube ich, zwei schnelle Änderungen funktionieren sollte:

1) in var http = require('http'); nach oben mit der anderen erfordert.

2) ändern, um die letzten beiden Zeilen der App:

// START THE SERVER 
// ============================================================================= 
http.createServer(app).listen(port); 
https.createServer(credentials, app).listen(443); 

(Wenn dies funktioniert, können Sie auch den Verweis auf httpsServer entfernen)

+0

Heyy Kumpel, das hat gut funktioniert! Danke vielmals – Sinequanon

3

Ehrlich gesagt, es sei denn, Sie eine sehr gute haben. Grund, nicht zu schauen, ob ich einen Webserver (NGINX) vor Ihre Knoten-App oder einen Load-Balancer setzen würde.

Dies hilft in vielerlei Hinsicht, nicht zuletzt dadurch, dass Sie die HTTPS-Anfrage dort beenden können und Ihre Knoten-App nicht kümmern.

Verwandte Themen