기술 검토(?) 겸, 이틀간 node.js 를 이용해서 이런 저런 스터디 & api 개발을 했다.


이제, 서버에 올려야 하는데......


일단 첫번째 장벽 발생.


기존 APM 이 동작중인 상태에서, node.js 로 작성된 서버가 '같이 잘 살아야'만 하는 상황이 됨.


조금 찾아보니...


1. 내부적으로 다른 포트에 node.js 기반의 (다른것도 물론 가능) 서버를 열고,

2. apache 의 VirtualHosts 설정에서 ProxyPass 를 설정해서,

3. 특정 url 로 접근시, 1번으로 '돌려주는' 것.

4. 외부에서 보면, 특별히 변화 없음. 내부적으로만 돌려막기(?) 하는 동작으로 보임. :)


자, 이제 설정을 해보자.


먼저 준비물 - module - 2개.


 mod_proxy, mod_proxy_http

 

1. ubuntu apache 서버는 기본적으로 두 모듈이 '설치'가 되어있음.


/etc/apache2/mods-available


 - 이 안에, proxy, proxy_http 설치된 상태.


 - 실제 설치는, 내부적으로는 ./mods-enabled 에 sort link 해주면 됨.

 - 이경우, 직접 하기 보다, '명령어'를 이용하는게 그냥, 맘이 놓이니...


 sudo a2enmod proxy 

 sudo a2enmod proxy_http


./mods-enabled 안에서 소프트 링크 확인.



2. 가상 호스트 설정.


 ./sites-available 내부의 기존파일 혹은 신규 파일 추가.

 

 다음 내용 추가, 수정 등등 적당히.

 

<VirtualHost *:80>

DocumentRoot /var/www/example.com/public_html

ServerName  www.example.com

# Index file and Document Root (where the public files are located)

DirectoryIndex index.html index.php


# Log file locations - 아래는 필요하다면.. :)

LogLevel warn

ErrorLog  /var/www/amazeapp.com/log/error.log

CustomLog /var/www/amazeapp.com/log/access.log combined



# 여기서 부터 본격적 추가.


ProxyRequests off

<Proxy *>

   Order deny,allow # 이부분의 경우, 콤마(,) 사이에 공백 없어야 함!

   Allow from all

</Proxy>

<Location /> # 내부적으로 접속 노드를 늘리고 싶다면 여기에 추가. :)

   ProxyPass http://localhost:3000/

   ProxyPassReverse http://localhost:3000/

</Location>

</VirtualHost>



 - 최종적으로 추가해야 하니, 다음과 같이 사이트를 가능하게 합시다!


 sudo a2ensite 파일명 (신규 추가의 경우만.)

 

3. 아파치, 재시작.


결론.


 잘 됨. 나머지 한가지는 '직접' 연결시 https redirect 설정 부분(얼핏 봤을때 VirtualHost)에 추가로 기억. :)


 덧붙여서 https 를 cloud flare 의 flexable ssl 접근시, node.js 쪽 pass direct 설정이 필요하다고 함.

 X-Forwarded-For 를 header 에 포함해주면 서버가 클라이언트의 '진짜' ip 확인 가능 하다고 기억함.

 


레퍼런스.

 http://garrows.com/blog/running-node-js-and-apache-together-using-mod_proxy/

 https://github.com/sindresorhus/guides/blob/master/run-node-server-alongside-apache.md

 http://stackoverflow.com/questions/28062159/node-js-https-on-cloudflare

 


뱀발.

 node.js 흐으음............ 나중에 좀 정리해서 따로 적어야 할 듯!

Posted by 코나