Make https server using Node.js + Expressjs v4
1. Make expressjs project
$express https_server
$cd https_server && npm install
2. Make cert, key file
$openssl genrsa 1024 > key.pem
using this key.pem file, make cert file.
$openssl req -x509 -new -key key.pem > cert.pem
Insert these data.
- Country Name
- State or Province Name
- Locality Name
- Organization Name
- Organization Unit Name
- Common Name
- Email Address
cert, key file ready to make https server.
3. Edit server code
(bin/www file code)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env node | |
/** | |
* Module dependencies. | |
*/ | |
var app = require('../app'); | |
var debug = require('debug')('logstash_test:server'); | |
var http = require('http'); | |
var https = require('https'); | |
var fs = require('fs'); | |
/** | |
* Get port from environment and store in Express. | |
*/ | |
var http_port = 3000; | |
var port = normalizePort(process.env.PORT || http_port); | |
app.set('port', port); | |
/** | |
* Create HTTP server. | |
*/ | |
var http_server = http.createServer(app); | |
http_server.listen(port); | |
http_server.on('error', onError); | |
http_server.on('listening', onListening); | |
/** | |
* Normalize a port into a number, string, or false. | |
*/ | |
function normalizePort(val) { | |
var port = parseInt(val, 10); | |
if (isNaN(port)) { | |
// named pipe | |
return val; | |
} | |
if (port >= 0) { | |
// port number | |
return port; | |
} | |
return false; | |
} | |
/** | |
* Event listener for HTTP server "error" event. | |
*/ | |
function onError(error) { | |
if (error.syscall !== 'listen') { | |
throw error; | |
} | |
var bind = typeof port === 'string' | |
? 'Pipe ' + port | |
: 'Port ' + port; | |
// handle specific listen errors with friendly messages | |
switch (error.code) { | |
case 'EACCES': | |
console.error(bind + ' requires elevated privileges'); | |
process.exit(1); | |
break; | |
case 'EADDRINUSE': | |
console.error(bind + ' is already in use'); | |
process.exit(1); | |
break; | |
default: | |
throw error; | |
} | |
} | |
/** | |
* Event listener for HTTP server "listening" event. | |
*/ | |
function onListening() { | |
var addr = http_server.address(); | |
var bind = typeof addr === 'string' | |
? 'pipe ' + addr | |
: 'port ' + addr.port; | |
debug('Listening on ' + bind); | |
} | |
/*https server settings start*/ | |
/* | |
* Create HTTPS options server. | |
* */ | |
var options = { | |
key: fs.readFileSync(__dirname + '/../keyfiles/key.pem'), | |
cert: fs.readFileSync(__dirname + '/../keyfiles/cert.pem') | |
}; | |
var app2 = require('../app'); | |
var https_port = 443; | |
var port2 = normalizePort(process.env.PORT || https_port); | |
app2.set('port', port2); | |
var https_server = https.createServer(options, app2); | |
https_server.listen(port2); | |
//https server added |
4. Run
$npm start
(if you occur error, please run on root)
Good luck!
ps1. bin/www file code added part
https://gist.github.com/pineoc/b1d9c31e5e0600d328fc#file-https-server-bin-www-js-L95-L111
ps2. file dir tree image
댓글 없음:
댓글 쓰기