프로그래밍/서버, DBMS

[서버] 우분투 아파치 가상호스트 및 프록시 설정

포도알77 2019. 3. 27. 10:42
프록시를 모른다면? [웹 서버] Proxy 서버와 Forward, Reverse 프록시

 오늘 드디어 인터넷이 연결되면서, 고정 아이피를 받았다.  그래서 근 2주간 끊겨있던 웹 서버와 기타 서버들을 가동했다.  


 물론 컴퓨터는 달랑 2대인데 돌려야할 웹 사이트는 여러개고 추가적으로 몇 도메인을 구매하여 계속해서 늘릴 예정이라서, 반드시 한 컴퓨터에 여러 웹사이트를 운영해야한다. 


 학부 과정일 때(물론 가르쳐준 사람이 없지만..), 80번 포트 == 웹 서버 포트라고 생각해서 항상 1대에 1 사이트만 운영될 수 있는줄 알았다. 물론 깨달은지는 좀 꽤 지났지만, 추가적으로 사용하기 위해 "별도의 노력"이 필요한 상황이 그닥 달갑지 않아서 1 컴퓨터 1 서버를 고수했다. 


 아무튼 각설하고, 한 컴퓨터에서 여러 서버를 동작시키기 위해서는 가상호스트 (Virtual Host)를 사용해야 한다.  

 
 웹 서버를 아파치만 사용하는 경우에는, virtual host 하나로 여러 도메인들에 라우팅이 가능하다. 물론 Node.js나 Nginex같은 서버를 써도 상관없다. 위 언급한 세가지 모두 다 가상 호스트를 지원하므로 걱정하지말자. 



 물론 나의 경우는 이 블로그(fatc.club)이 워드프레스 기반이고, php기반이기 때문에 아파치를 사용했다.  



 (1) sudo vim /etc/apache2/apache2.conf 파일에서 /var/www/html을 알맞게 수정하자.  
 
 이 주소는 사용자가  http를 타고 들어왔을때, 가장 최상위 폴더를 지정하는 것이다. 만약 가상 호스트에서 각 도메인별로 지정하지 않았다면, 이게 기본 위치이다. 

 
 즉, 아파치를 설치하고 바로 localhost에 접속하면 나오는 위치,  그리고 /var/www/another 폴더는 접근할 수 없다는 말이된다.  


 나는 Document에 각 사이트들의 html 파일을 저장했다. 예를들어 documents/www/a.com,  documents/www/b.com과 같다. 따라서 나는 /var/www/another을 /home/ 계정명/Documents/www으로 했다. 



 (2) sudo vim /etc/apache2/sites-available/000-default.conf 

 이 파일은 가상 호스팅을 하지 않았을때, 기본적으로 사용되는 default conf파일으로, 위의 폴더에서도 루트 디렉토리를 위와 똑같이 바꾸어 주자. 
 /var/www/another ==> /home/ 계정명/Documents/www 



 (3) sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/a.com.conf

 a.com홈페이지용 conf를 만든다. 이후 serverName을 a.com, DocumentRoot는 /home/ 계정명/Documents/www/a.com으로 했다. 



 만약 사용자가 a.com으로 접속하게 된다면, 이제  /home/ 계정명/Documents/www/a.com 폴더 밖으로 나갈 수 없다. 마찬가지로 b.com.conf도 만들어주자.  



 (4) sudo a2ensite a.com.conf b.com.conf 

 이제 두 사이트의 conf파일을 활성화 해주자.



 (5) sudo service apache2 restart

 마지막으로 아파치를 껏다 켜주면 된다.(reload도 무방하다)






 만약 노드 JS서버를 이용하는 경우,  Proxy와 ReverseProxy를 이용해야 한다. 

(**1) sudo aptitude install -y libapache2-mod-proxy-html libxml2-dev  
  위의 모듈을 설치한다. 

 (**2) sudo a2enmod proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html 
 그리고 설치된 프록시 모듈을 동작시켜 준다.  

(**3) 마지막으로 Node.js 도메인의 conf파일(a.com.conf / b.com.conf와 같은)에   
ProxyPass / http://localhost:port/

ProxyPassReverse / http://localhost:port/

를 추가해주자. 그러면 잘 동작할 것이다. 



페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사