2012-11-06 11 views
0

node.js를 사용하여 실행하는 간단한 응용 프로그램이 있습니다. 다음은 내 server.js이다 : 나는 그것을 설정하고 싶습니다 내가 http://myserver.com:8000Node.js 및 https 구성

에서 응용 프로그램에 액세스 할 수

var myApp = require('./lib/myapp') 
new myApp({ 
port: 8000 
}); 

, 그래서 나는 https://myserver.com

내가 시도 다양한 방법을 사용하여 응답에 액세스 할 수 있습니다 여기에 질문하는 질문에서,하지만 나는 그것을 작동시킬 수 없습니다. 응용 프로그램을 초기화하는 방법이 그 이유라고 생각합니다. 그러나 확실하지 않습니다.

나는 아파치 뒤에 넣을 수 있지만, 노드를 사용하여 그것을하고 싶습니다.

누군가 나를 위해 server.js를 수정할 수 있다면 큰 도움이 될 것입니다!

감사

A.

+0

당신은이에 대한 [노드 HTTP 프록시 (https://github.com/nodejitsu/node-http-proxy)를 사용하여 봤어? – JohnnyHK

+0

사실, 나는 가지지 않았다! 그걸 확인하고 그것이 도움이되는지 확인합시다! 감사! –

+0

node-http-proxy를 사용하는 동안 다음 오류가 나타납니다. "오류가 발생했습니다 : {"code ":"ECONNRESET "}". HTTP 프록시는 잘 작동하지만 https는이 오류를 발생시킵니다. –

답변

0

이 질문에 도움을 주신 모든 분들께 감사드립니다. 나는 정말 모든 포인터에 감사드립니다!

JohnnyHK에게 특별 언급, 누구의 제안이 나를 따라 잡았습니다. node-http-proxy를 사용하여 문제를 해결할 수있었습니다. 간단하고 효과적인! 아래는 내 서버의 모습입니다.js는 다음과 같습니다.

var MyApp = require('./lib/app'); 
var fs = require('fs'), 
    http = require('http'), 
    https = require('https'), 
    httpProxy = require('http-proxy'); 

var options = { 
    https: { 
    key: fs.readFileSync('certs/server.key', 'utf8'), 
    cert: fs.readFileSync('certs/server.crt', 'utf8'), 
    ca: fs.readFileSync('certs/ca.crt', 'utf8') 
    }, 
    target: { 
    https: true // This could also be an Object with key and cert properties 
    } 
}; 

var app = new MyApp({ 
    port: 8080 
    }); 

var proxy = new httpProxy.HttpProxy({ 
    target: { 
    host: 'localhost', 
    port: 8080 
    } 
}); 
https.createServer(options.https, function (req, res) { 
    proxy.proxyRequest(req, res) 
}).listen(443); 

모두에게 감사드립니다.

는 -Noman의 A.

0

https하면 보안 레이어 (포트 443)를 통해 그것을 실행할 것을 제안 Noman, 당신의 가장 좋은 방법은 아파치 이상 nginx 뒤에 넣어, 실제 웹 서버를 수 있도록하는 것입니다 당신의 Node.js를 애플리케이션 비즈니스 로직

에 집중하는 동안 Node.js를 look here

+0

ArtDeineka 주석 주셔서 감사합니다. 문제는 https 용도로 노드 자체를 사용하는 사람들을 보았 기 때문에 어떻게해야하는지, 또는 내가 잘못하고있는 것을 배우고 싶었습니다. 물론 Apache/ngnix는 이러한 목적에 매우 유용합니다. –

+0

링크를 사용하여 답변을 업데이트했습니다. –

+0

링크를 제공해 주셔서 감사합니다. 거기에 게시 된 몇 가지 솔루션을 사용해 보았습니다. 내 주요 문제는 내 현재 server.js 의이 부분을 어디에 넣어 생각 : new myApp ({port : 8000}); 저에게 포인터 나 샘플을 줄 수 있다면 그것은 생명을 구하는 것입니다! –

0

에 의해 그것을 수행하려는 경우 SSL 인증서 등을 관리하는 것은을 myApp express/connect 앱? 나는 당신이 만든 new 키워드를 가진 이상한 생성자를 좋아하지 않는다. 우리는 그것을 돕기 위해 그 내용을 볼 필요가있다.

  1. 그것은 '혜택받지'포트에서 실행 얻어서 시작, 당신의 800080로 변경,하지만 http 서버를 유지 즉. 오른쪽의 권한으로 서버를 실행하는 방법을 파악하면 고객이 http 먼저 접촉을 시도하기 때문에
  2. , 443

에 대한 https 및 80 http를 교환하기 쉽게해야하지만 해당 사이트를 https 버전으로 리디렉션해야합니다. "빠른 방법"이라면 동일한 앱을 설정하고 http와 https 서버로 간단히 청취 할 수 있습니다. 그런 다음 미들웨어를 추가하여 모든 http 요청을 https으로 리디렉션하면 완료됩니다. 이 How to force SSL/https in Express.js을보세요.

편집 :이 답변은 청소기 이중 서버/단일 응용 프로그램 설정을 가지고 있지만 전달 요청에 대해 아무것도 포함되지 않습니다 Listen on HTTP and HTTPS for a single express app

이상적인 설정은 명시 적/main.js에서 응용 프로그램 개체를 연결을 수출합니다. 별도의 runner.js은 앱을 요구하고 올바른 옵션을 사용하여 두 개의 서버 (1 http & 1 https)로 전달합니다.

+0

8000에서 80으로 포트를 변경하여 포트 80/http에서 실행할 수 있습니다. 명시 적으로 제공 한 링크를 살펴 보겠습니다. 감사! –