Red Hat Enterprise Linux, Arch, Scientific Linux, Debian Server, Ubuntu Server 등 apache2 서비스를 지원하는 리눅스 배포판에 아파치를 설치할 때, mod_authz_host 모듈 관련 오류가 발생해 서비스 실행이 중단되는 경우가 있습니다. 이 오류는 apache2 서비스를 재시작할 때마다 나타나곤 하며, 대개 파일의 첫 번째 줄에 대한 구문 경고 형태로 표시되지만 경우에 따라 다른 형태로 나타날 수도 있습니다.
어떤 줄에서 문제가 발생했든, 이 오류는 mod_authz_host가 설치되지 않았거나 메모리에 로드되지 않아서 생기는 것이 아닙니다. 오히려 이 오류가 발생한다는 것 자체가 apache2 서버가 해당 모듈을 정상적으로 로드하고 있다는 증거입니다. 실제 원인은 어딘가에 지시문(directive)이 잘못된 위치에 놓여 있다는 것뿐이며, 코드 배치만 올바르게 정리하면 빠르게 해결됩니다. 참고로 인터넷에서 흔히 볼 수 있는 "mod_authz_host를 설치하라"는 안내는 이 문제와 무관합니다. 이 오류는 특정 패키지의 부재나 미충족된 의존성 때문이 아니며, 개발자들이 오류 메시지를 작성하는 방식 때문에 이런 오해가 자주 생기는 것입니다.
restrict.conf 모듈 지시문 수정하기
설명을 위해 예제에서는 distrowatch.com을 사용하겠습니다. 공식 apache2 문서에서는 dev.example.com을 예시로 사용하는데, 실제 환경에서는 두 주소 모두 사용해서는 안 됩니다.
텍스트 편집기로 해당 파일을 엽니다. 이 파일은 보호된 디렉터리에 있으므로 root 권한이 필요합니다. 여기서는 nano를 사용했지만, vi나 선호하는 다른 편집기를 사용해도 무방합니다. 굳이 콘솔 편집기를 쓸 필요는 없지만, GUI 편집기를 사용할 경우에는 sudo 대신 gksu를 사용하는 것이 적절합니다.
파일을 연 후 다음과 같은 내용이 있는지 주의 깊게 확인합니다.
Order deny,allow
Deny from all
Allow from distrowatch.com
이 지시문들은 반드시 <Location /> ... </Location> 블록 안에만 존재해야 합니다. 첫 번째 태그의 슬래시 뒤 공백에 유의하세요. 만약 이 줄들이 어떤 블록에도 속하지 않은 채 떠 있다면, 태그로 감싸거나 아래와 같이 옮겨줍니다.
<Location />
Order deny,allow
Deny from all
Allow from distrowatch.com
</Location>
distrowatch.com은 실제 사용 중인 도메인으로 교체해야 한다는 점을 잊지 마세요. dev.example.com을 직접 참조하는 줄이 발견된다면, 예제 코드를 그대로 복사했거나 기본값으로 추가된 것입니다. example.com 도메인은 기술 문서에서 설명용으로만 존재하며 실제 용도가 없습니다. httpd.apache.org/docs/2.2/howto/access.html의 공식 문서에서도 이를 참조하고 있으므로, 새 설정을 추가할 때 안전하게 삭제해도 됩니다.
restrict.conf 파일에 디렉터리를 지정해야 하는 경우에는 <Location /> </Location> 태그 대신 <Directory /> </Directory> 태그를 사용할 수 있습니다. 이때 역시 첫 번째 태그의 공백을 유지해야 합니다. 문서를 저장하고 닫은 뒤 apache2 서비스를 재시작하면 더 이상 문제가 발생하지 않을 것입니다.
아파치 서버가 다음과 비슷한 오류를 반환할 때가 바로 이 상황을 의미합니다.
실제 오류 메시지에서는 # 위치에 줄 번호가 표시되며, 이는 지시문이 해당 태그 안에 안전하게 감싸져 있지 않다는 뜻입니다. 디버깅 시에는 오류에 명시된 줄 번호로 바로 이동해 무엇이 잘못됐는지 확인하는 것이 좋습니다. 오류 메시지에서는 아파치 에러 로그에 더 많은 정보가 있다고 안내하지만, 실제로는 여기서 설명한 내용을 되풀이하는 수준일 가능성이 높습니다.
이후 발생하는 구문 오류도 같은 방식으로 수정할 수 있습니다. 하나를 고친 뒤 apache2 서비스가 또 다른 오류를 출력할 수 있는데, 이상하게 들리겠지만 정상적인 현상입니다. 아파치는 문제가 있는 첫 번째 줄까지만 코드를 처리하기 때문입니다. 그 아래에도 문제가 있었다면 애초에 그곳까지 도달하지 못했을 것입니다. 이런 문제가 생기면 파일을 편집할 때 줄 번호에 세심한 주의를 기울이세요. nano로 편집 중이라면 Ctrl 키를 누른 상태에서 C 키를 눌러 커서가 현재 위치한 줄 번호를 확인할 수 있으며, 이렇게 하면 디버깅 과정이 훨씬 수월해집니다.
여러 개의 블록이 아무것도 연결되지 않은 채 흩어져 있는 경우도 있을 수 있습니다. 각 블록에는 반드시 태그가 붙어 있어야 합니다. 동일한 URL에 동일한 지시문이 여러 번 중복되어 있다면 추가 블록은 제거하는 것이 좋습니다. 중복 설정은 잠재적으로 문제를 일으킬 수 있으며, 특정 URL에 대한 설정은 일반적으로 하나만 유지하는 것이 바람직합니다. 동일한 URL에 여러 지시문을 전달하면 결국 서로 충돌하여 상쇄될 수 있기 때문입니다.
저자 소개
Kevin Arrows는 10년 이상의 업계 경력을 지닌 베테랑 기술 전문가로, Microsoft Certified Technology Specialist(MCTS) 자격증을 보유하고 있으며 최신 기술 동향을 꾸준히 학습하는 데 큰 열정을 가지고 있습니다. 소프트웨어 개발, 사이버보안, 클라우드 컴퓨팅 등 다양한 기술 분야에서 폭넓게 집필해 왔으며, 복잡한 기술 개념을 명확하고 간결하게 설명하는 능력으로 동료들에게 널리 인정받고 높은 평가를 받고 있습니다.