我正在向我的nodeJS服务器启用https请求.但我想使用相同的路由,我可以从具有该8080端口的http请求接收到具有该443端口的https.
http://api.myapp.com:8080/api/waitlist/join是成功的
https://api.myapp.com:443/api/waitlist/join不是
我在代码中错过了什么来使用与httpsServer的’app’相同的路由?
- 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);
谢谢!
解决方法
使用
API docs for .listen在我自己的项目中有类似的需求,并查看你的代码,我认为两个快速更改应该工作:
1)添加var http = require(‘http’);满足您的其他要求.
2)将应用程序的最后两行更改为:
- // START THE SERVER
- // =============================================================================
- http.createServer(app).listen(port);
- https.createServer(credentials,app).listen(443);