1개의 서버(Apache)에 하위 경로로 여러 개의 Node.js 앱을 연결하는 방법

devyang97·2020년 8월 25일
0

a.com이라는 도메인을 가지고 있을 때

  • a.com: Node.js 앱 1번
  • a.com/node2: Node.js 앱 2번
  • a.com/node3: Node.js 앱 3번 으로 연결을 해야하는 일이 생겼다.

localhost에서 만들고 있다고 가정한다면

  • 1번 앱 -> localhost:3000
  • 2번 앱 -> localhost:3001/node2
  • 3번 앱 -> localhost:3002/node3

각각의 url이 해당 앱으로 진입하는 진입 url(?) 이어야 한다.

따라서, 1번 앱은 상관 없겠지만 2번이나 3번 앱은 static 폴더를 설정할 때에도
app.use('/node2', express.static(path.join(__dirname, 'public'))); 이렇게 설정하고, 사용할 때에도 <link rel="stylesheet" href="/node2/css/style.css" /> 이런식으로 앞에 /node2를 붙여주어야 정상적으로 작동한다.

static 파일들을 import 할 때 뿐만 아니라, ajax 요청할 때에도 마찬가지다!

어쨌든 이렇게 설정을 한 후에 Apache 설정쪽에서 다음과 같이 연결하면 된다.

<VirtualHost *:443>
  ServerName a.com
  ProxyRequests Off
  ProxyPreserveHost On
  ProxyPass / http://localhost:3000/
  ProxyPassReverse / http://localhost:3000/

  <Location /node2>
      ProxyPass http://localhost:3001/node2
      ProxyPassReverse http://localhost:3001/node2
  </Location>
  <Location /node3>
      ProxyPass http://localhost:3002/node3
      ProxyPassReverse http://localhost:3002/node3
  </Location>

  ...

</VirtualHost>

0개의 댓글