노드의 express.js에서 HTTPS를 사용하려고하는데 알아낼 수 없습니다.
이것은 내 app.js
코드입니다.
var express = require('express');
var fs = require('fs');
var privateKey = fs.readFileSync('sslcert/server.key');
var certificate = fs.readFileSync('sslcert/server.crt');
var credentials = {key: privateKey, cert: certificate};
var app = express.createServer(credentials);
app.get('/', function(req,res) {
res.send('hello');
});
app.listen(8000);
내가 실행할 때 HTTP 요청에만 응답하는 것 같습니다.
간단한 바닐라 node.js
기반 HTTPS 앱을 작성했습니다.
var fs = require("fs"),
http = require("https");
var privateKey = fs.readFileSync('sslcert/server.key').toString();
var certificate = fs.readFileSync('sslcert/server.crt').toString();
var credentials = {key: privateKey, cert: certificate};
var server = http.createServer(credentials,function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
server.listen(8000);
나는이 응용 프로그램을 실행할 때, 그것은 하지 HTTPS 요청에 응답합니다. 나는 fs 결과의 toString ()이 중요하지 않다는 것을 명심하십시오. 내가 부에노를 사용하지 않고 여전히 둘 다의 조합을 사용했기 때문입니다.
추가 편집 :
프로덕션 시스템의 경우 Nginx 또는 HAProxy를 사용하여 nodejs 앱에 요청을 프록시하는 것이 좋습니다. nginx를 설정하여 SSL 요청을 처리하고 노드 app.js에 http를 말하면됩니다.
추가 편집 (2015 년 4 월 6 일)
AWS를 사용하는 시스템의 경우 EC2 Elastic Load Balancer를 사용하여 SSL 종료를 처리하고 EC2 웹 서버에 대한 정기적 인 HTTP 트래픽을 허용하는 것이 좋습니다. 보안을 강화하려면 ELB 만 EC2 인스턴스로 HTTP 트래픽을 보낼 수 있도록 보안 그룹을 설정하십시오. 그러면 암호화되지 않은 외부 HTTP 트래픽이 시스템에 충돌하지 않습니다.