2014-03-27 3 views
3

다른 포트가있는 단일 서버에서 현재 두 개의 StrongLoop LoopBack 개의 apps (Nodejs apps)를 실행 중입니다. 두 앱 모두 명령 행에서 slc lb projectslc lb model을 사용하여 생성되었습니다.동일한 서버에서 여러 개의 StrongLoop LoopBack 앱을 실행하는 방법은 무엇입니까?

경로 또는 하위 도메인이 다른 단일 포트에서 이러한 앱을 실행할 수 있습니까? 그렇다면 리눅스 머신에서 어떻게 할 수 있습니까?

예 : 첫 번째 응용 프로그램에 대한

http://api.server.com:3000/app1/.

http://api.server.com:3000/app2/ (두 번째 앱)

감사합니다.

답변

10

LoopBack 응용 프로그램은 일반 Express 응용 프로그램이므로 마스터 응용 프로그램의 경로에 마운트 할 수 있습니다.

var app1 = require('path/to/app1'); 
var app2 = require('path/to/app2'); 

var root = loopback(); // or express(); 
root.use('/app1', app1); 
root.use('/app2', app2); 
root.listen(3000); 

명백한 단점은 APP1과 APP2 사이의 높은 런타임 커플 링 - 당신은 그들 중 하나를 업그레이드 할 때마다, 당신은 전체 서버를 다시 시작해야합니다 (즉, 둘 다). 또한 하나의 응용 프로그램에서 치명적인 오류가 발생하면 전체 서버가 다운됩니다.

@fiskeben이 제공하는 솔루션은 각 앱이 분리되어 있기 때문에 더욱 강력합니다.

반면에 내 솔루션은 관리가 더 쉽습니다 (nginx + 앱 노드 프로세스 대신 노드 프로세스가 하나뿐입니다). 또한 두 앱에서 공유하는 미들웨어를 구성 할 수 있습니다.

var root = loopback(); 
root.use(express.logger()); 
// etc. 

root.use('/app1', app1); 
root.use('/app2', app2); 
root.listen(3000); 
+0

Miroslav에게 감사드립니다. 나는 분명히 여러분의 것을 시험해보고 두 가지 해결책 모두에서 내가 배울 수있는 것을 보게 될 것입니다. –

6

서버 앞에서 어떤 종류의 프록시가 필요합니다 (예 : nginx). nginx는 포트 (예 : 80)를 듣고 사용자가 정의한 몇 가지 규칙 (호스트 이름, 경로, 헤더 등)을 기반으로 시스템의 다른 서버로 수신 요청을 리디렉션합니다.

난의 nginx에 어떤 전문가는 아니지만 그러나 나는이 같은 구성합니다 :

server { 
    listen: 80; 
    server_name api.server.com; 
    location /app1 { 
    proxy_pass http://localhost:3000 
    } 
    location /app2 { 
    proxy_pass http://localhost:3001 
    } 
} 

의 nginx는 쿼리 문자열, 경로와 다른 모든 통과 지원을하지만, 내가 넣어 당신에게 그것을 떠날거야 함께 조각 :)

nginx에 대한 proxy server documentation보세요.

+0

감사합니다. 이것은 나를 위해 작동합니다. :) –

+0

이것은 URL을 제외하고는 현재 각각/app1 또는/app2가 각각의 응용 프로그램에 도착할 때 시작됩니다 ... – latj

+0

@latj 어쩌면 [비슷한 질문에 대한 답변] (http://serverfault.com/a/ 562850) 도움을 줄 수 있습니다. – fiskeben

관련 문제