2016-06-30 9 views
5

私は自分のnodeJSサーバーに対してhttps要求を有効にしています。しかし、私は、その8080ポートを持つHTTP要求から、その443ポートを持つhttpsに受信できるのと同じルートを使用したいと思います。ExpressからHTTPSへのルートの使用方法は?

http://api.myapp.com:8080/api/waitlist/joinhttps://api.myapp.com:443/api/waitlist/join 成功したが、私は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); 

ありがとうございます!

答えて

7

同様の必要性と自分のプロジェクトに.listenためAPI docsを使用して、あなたのコードを見て、私は2つの迅速な変更が動作するはずだと思う:あなたの他に必要でトップにvar http = require('http');を追加

1)。

2)へのアプリの最後の2行を変更します。

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

(これが動作する場合、あなたはまた、 httpsServerへの参照を削除することができます)

+0

うまく動きましたどうもありがとう – Sinequanon

3

正直、あなたは非常に良いを持っていない限り。私はノード・アプリの前にWebサーバー(NGINX)を置いたり、ロード・バランサを置いたりするのではないでしょうか。

これは、いくつかの点で役立ちますが、そこでのHTTPS要求を終了し、ノードアプリケーションが気にしないようにすることができます。

関連する問題