본문 바로가기

DevOps/Tomcat

[Apache] 아파치에서 가상호스팅 설정하는 방법 - 컴도리돌이

728x90

여러 개의 도메인이 같은 IP 주소를 공유하고, 각 도메인이 특정 포트로 연결되도록 설정하려는 경우가 존재합니다. 이는 아파치 웹 서버에서 가상 호스팅(Virtual Hosting)을 사용하여 구현할 수 있으며, 이번 포스팅에서는 가상 호스팅에 짧은 개념과 설정 방법에 대해 적어 나가려고 합니다. 


가상호스팅 (Virtual Hosting)

가상 호스팅은 하나의 웹 서버에서 여러 도메인을 호스팅 할 수 있게 해주는 방법으로 두 가지 주요 방식이 존재합니다. 첫 번째는 이름 기반 가상호스팅이고, 두 번째는 IP 기반 가상 호스팅입니다. 이번 포스팅에서는 하나의 IP 주소에서 여러 도메인을 포트별로 구분하여 호스팅 하는 방법을 설명합니다. 이를 포트 기반 가상 호스팅이라고 할 수 있습니다.


 

아파치 설정 파일 수정

아파치 웹 서버에서는 각 도메인을 특정 포트로 연결하도록 설정하려면, 'httpd.conf' 또는 별도의 가상 호스트 설정 파일에서 'VirtualHost' 지시어를 사용하여 설정할 수 있습니다. 저는 'httpd.conf' 파일을 사용해서 가상 호스팅을 설정하려고 합니다. 

아파치 웹 서버의 설정 파일인 httpd.conf 파일을 열어서 편집합니다.

sudo vi /etc/httpd/conf/httpd.conf

 


 

가상 호스트 설정

각 도메인을 특정 포트로 연결하는 포트 기반 가상 호스트를 설정합니다.

<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias www.example.com
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8001/
    ProxyPassReverse / http://127.0.0.1:8001/
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example2.com
    ServerAlias www.example2.com
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8000/
    ProxyPassReverse / http://127.0.0.1:8000/
</VirtualHost>

 

 

  • <VirtualHost *:80>: 포트 80에서 들어오는 모든 요청을 처리할 가상 호스트를 정의합니다. *는 모든 IP 주소에서 들어오는 요청을 의미합니다.
  • ServerName: 해당 가상 호스트의 기본 도메인 이름을 지정합니다.
  • ServerAlias: 가상 호스트의 추가 도메인 이름을 지정합니다. 이 도메인 이름들도 ServerName과 동일한 호스트로 처리됩니다.
  • ProxyRequests Off: 아파치가 프록시 서버로 사용되지 않도록 설정합니다.
  • ProxyPreserveHost On: 프록시 요청 시 원래의 호스트 헤더를 유지합니다. 클라이언트가 원래 요청한 호스트 정보를 백엔드 서버에 전달합니다.
  • ProxyPass / http://127.0.0.1:8001/: 모든 요청을 로컬의 포트 8001로 전달합니다. http://127.0.0.1:8001/으로 프록시 처리합니다.
  • ProxyPassReverse / http://127.0.0.1:8001/: 프록시 응답의 헤더에 포함된 URL을 수정하여 클라이언트가 올바른 URL을 볼 수 있도록 합니다.

 

 

아파치 재시작

설정을 완료한 후 아파치 웹 서버를 재시작하여 변경 사항을 반영합니다.

 sudo service httpd restart

 


 

오류가 난다면 다음 코드를 입력해서 자세히 읽어봅니다.

sudo systemctl status httpd.service