2016-06-30 21 views
5

Włączam żądania https w kierunku mojego serwera nodeJS. Ale chciałbym korzystać z tych samych tras, które mogę odbierać z żądań http z tym portem 8080 do mojego https z tym portem 443.Jak korzystać z tras z Express dla HTTPS?

http://api.myapp.com:8080/api/waitlist/join powiedzie https://api.myapp.com:443/api/waitlist/join nie jest Czego brakuje w kodzie, aby wykorzystać te same drogi jak dla „app” dla httpsServer?

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); 

Dzięki!

Odpowiedz

7

Używanie API docs dla .listen na własnych projektów o podobnej potrzebie, i patrząc na kodzie, myślę, że dwa szybkie zmiany powinny działać:

1) dodać var http = require('http'); do góry z innymi wymaga.

2) zmienić ostatnie dwa wiersze aplikacji na:

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

(Jeśli to działa, można również usunąć odwołanie do httpsServer)

+0

Heyy mate, który działał dobrze! Wielkie dzięki – Sinequanon

3

Prawdę mówiąc, chyba że masz bardzo dobre. powód, dla którego nie powinienem rozważyć umieszczenia serwera WWW (NGINX) przed aplikacją węzła lub load balancera.

Pomaga to na wiele sposobów, a nie jednym z nich jest to, że można tam zakończyć żądanie HTTPS i nie dbać o aplikację węzła.