Apache에서 DocumentRoot를 나누어 ALB로 접속해 보기

Apache에서 DocumentRoot를 나누어 ALB로 접속해 보는 방법을 정리해 봤습니다.
2023.03.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Apache에서 DocumentRoot를 나누어 ALB로 접속해 보는 방법을 정리해 봤습니다.

하고 싶은 것

이번 블로그에서는 Apache에서 DocumentRoot를 아래와 같이 나누어 ALB로 접속하는 방법에 대해 설명해보고자 합니다.

  • C:\XXXXXX\Apache24\htdocs
  • C:\XXXXXX\Apache24\rftdocs

※ Apache에서 설정한 DocumentRoot는 위와 같지만, ALB에서 설정한 리스너 규칙은 이미지에 나와있는 경로가 됩니다. DocumentRoot에서 설정한 경로와 리스너 규칙에서 설정한 경로가 다른 이유에 대해서는 해당 블로그에서 테스트를 통해 설명하고 있습니다.

그 외, 리스너 규칙을 통한 포트, 경로 기반 라우팅에 대해서는 아래 블로그를 참고해 주세요.

Apache 설정

먼저 Apache를 설치하고 conf 파일에 있는「httpd」파일을 열어줍니다.

SRVROOT를 아파치가 설치된 경로로 설정합니다.

※ 아파치가 설치된 폴더 내부에서 루트 디렉토리를 나눌 생각입니다.

이어서 포트를 설정합니다.

「C:\XXXXXX\Apache24\htdocs」의 경우 80번 포트를 사용합니다.

「C:\XXXXXX\Apache24\rftdocs」의 경우 44301 포트를 사용합니다.

80번 포트에서 사용할 루트 디렉토리를 설정합니다.

  • C:\XXXXXX\Apache24\htdocs

추가 포트와 루트 디렉토리를 사용하기 위해 virtual host를 사용합니다.

※ ALB에서 포트, 경로 기반 라우팅을 통해 rtfdocs에 접근이 가능한지 테스트하기 위해 44301 포트의 루트 디렉토리를 C:\XXXXXX\Apache24\rtfdocs 로 지정 했습니다.

마지막으로「conf→extra」폴더에 있는 httpd-vhosts 파일을 열어서 이미지 처럼 수정합니다.

※ 포트를 설정하고, 각 포트 별로 루트 디렉토리를 설정했습니다.

ALB에서 접속 테스트

80번 포트의 루트 디렉토리 경로에 index.html 파일을 배치했습니다.

44301 포트의 루트 디렉토리 또 한 index.html 파일으 배치했습니다.

※ 테스트를 위해 /ht 폴더 없이 헬스 체크, ALB 접속을 테스트하겠습니다.

ALB의 리스너 규칙의 경우 다음과 같습니다.

80번 포트「/」패스로 접속 했을 시「test-80-tg」인 80번 포트로 접속합니다.

  • C:\XXXXXX\Apache24\htdocs

이어서 /ht/* 경로로 접속했을 시, 44301포트인「test-44301-tg」로 접속합니다.

  • C:\XXXXXX\Apache24\rftdocs\ht

각 루트 디렉토리의 헬스 체크 확인

80번 포트의 경우「/」로 헬스 체크를 시도하고 있고, 루트 디렉토리인 C:\XXXXXX\Apache24\htdocs에 index.html 파일이 있으므로「healthy」가 표시됩니다.

44301 포트의 경우도「/」로 헬스 체크를 시도하고 있고, 루트 디렉토리인 C:\XXXXXX\Apache24\rftdocs에 index.html 파일이 있으므로「healthy」가 표시됩니다.

각 루트 디렉토리 접속 확인

문제 없이 C:\XXXXXX\Apache24\htdocs\index.html 파일이 열렸습니다.

/ht/ 경로로 접속해 보면 에러가 발생합니다.

루트 디렉토리를 C:\XXXXXX\Apache24\rftdocs 로 설정하고「/ht」경로로 접속했을 시, C:\XXXXXX\Apache24\rftdocs 경로가 설정된 타겟 그룹을 불러와 컨텐츠를 표시해야하지만 에러가 발생합니다.

그렇다면 헬스 체크의 경우「rftdocs\index.html」경로를 이용하고, ht 폴더를 만들어서 접속해 보면 컨텐츠가 표시될까요?

문제 없이 웹 컨텐츠가 표시되는 것을 확인할 수 있습니다.

여기서 알 수 있는 것은 아파치 내부에서 루트 디렉토리를 여러 개 나누더라도, ALB로 접속할 시「/」로 접속 가능한 루트 디렉토리의 경우 단 하나라는 것 입니다.

※ 반대로 리스너 규칙에서 /ht 경로 기반 라우팅을 설정하지 않는다면, 44301 포트와 80번 포트가 라운드 로빈되어 접속될 거라 생각합니다. 하지만 이러한 설정의 경우 포트를 나누는 의미가 없으므로 경로 기반 라우팅을 설정할 필요가 있는데, 이럴 경우 루트 디렉토리에서 폴더를 하나 더 추가해야한다는 점 입니다.

본 블로그 게시글을 보시고 문의 사항이 있으신 분들은 클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !