프록시를 모른다면? [웹 서버] Proxy 서버와 Forward, Reverse 프록시
물론 컴퓨터는 달랑 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/
를 추가해주자. 그러면 잘 동작할 것이다.
'프로그래밍 > 서버, DBMS' 카테고리의 다른 글
[서버] 새로운 x64 APM, AUTOSET 설치하기 2/2 (0) | 2019.04.14 |
---|---|
[서버] 새로운 x64 APM, AUTOSET 설치하기 1/2 (0) | 2019.04.14 |
[SSL] 아파치에 Let's encrypt 인증서 설치 및 certbot을 이용한 자동 갱신 (0) | 2019.03.19 |
[서버] Node.js Redis Only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context 오류 해결 (2) | 2019.03.11 |
[티스토리] 티스토리 OPEN API 이용하여, Access token 발급받기 (2020.12.10 업데이트) (2) | 2019.03.10 |