Apache는 전 세계 웹 서버의 약 67%에서 사용되는 웹 서버 소프트웨어로, Apache Software Foundation에서 개발하고 배포하는 오픈소스 프로그램입니다. 무료로 사용할 수 있으며, 빠르고 안전하며 안정적이라는 장점 덕분에 많은 사용자에게 사랑받고 있습니다. 하지만 최근 들어 상당수 사용자가 도메인에 Apache를 설정하는 과정에서 “Forbidden – You Don't Have Permission To Access / on this Server(금지됨 – 이 서버의 /에 액세스할 권한이 없습니다)” 오류를 경험하고 있다고 보고했습니다.
“Forbidden – 액세스 권한 없음” 오류의 원인
여러 사용자로부터 접수된 수많은 신고를 바탕으로 문제를 조사했고, 이를 완전히 해결할 수 있는 해결책들을 마련했습니다. 또한 오류를 유발하는 원인도 함께 분석했으며, 그 내용은 다음과 같습니다.
- 잘못된 전역 디렉터리 설정: 전역 디렉터리(Global Directory) 설정이 제대로 구성되지 않아 사이트에 필요한 지시문(Directive)이 충분히 허용되지 않는 경우입니다. 사이트에 올바른 지시문이 없으면 이 오류가 발생할 수 있습니다.
- 잘못된 권한 설정: Apache가 정상적으로 작동하려면 디렉터리의 루트 폴더까지 권한이 부여되어야 합니다. 이러한 권한이 제대로 설정되지 않으면 오류가 트리거될 수 있습니다.
- 사용자 이름 미입력: 경우에 따라 “httpd.conf” 파일에 실제 사용자 이름을 입력해야 오류가 해결되기도 합니다. 이 방법은 일부 사용자에게는 효과가 있지만, 모든 경우에 적용되는 것은 아닙니다.
이제 문제의 성격에 대해 기본적으로 이해했으니, 해결 방법을 살펴보겠습니다. 아래의 해결책은 제시된 순서대로 하나씩 적용하는 것을 권장합니다.
해결 방법 1: 전역 디렉터리 설정 변경
이 문제를 해결하려면 일부 설정을 올바르게 구성해야 합니다. 이 단계에서는 사용자 환경에 따라 “httpd.conf” 또는 “httpd-vhosts.conf” 파일에 위치한 전역 디렉터리 설정에 Options 지시문을 추가합니다. 절차는 다음과 같습니다.
- “httpd.conf” 또는 “httpd-vhosts.conf” 파일을 연 후 디렉터리(Directory) 설정 부분을 찾습니다. 해당 설정은 아래 코드와 유사한 형태일 것입니다.
<Directory /> Options FollowSymLinks AllowOverride All Order deny,allow Allow from all </Directory>
참고: 코드에 “Allow From All” 대신 “Deny From All”이 작성되어 있을 수 있습니다. 이 경우 아래와 같이 “Allow From All” 또는 “Require All Granted”로 수정하는 것이 중요합니다.
- 아래 코드와 같은 형태가 되도록 “Options Indexes FollowSymLinks Includes ExecCGI” 라인을 추가합니다.
<Directory /> #Options FollowSymLinks Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order deny,allow Allow from all </Directory>
- 문제가 지속되는지 확인합니다.
- 문제가 해결되지 않았다면 코드에서 “Allow from All”을 제거하고 “Require All Granted”로 변경합니다.
- 다시 한번 문제가 해결되었는지 확인합니다.
해결 방법 2: 권한 설정 변경
사용자가 도메인에 Apache를 연결할 때는 소프트웨어가 파일을 읽고 쓸 수 있도록 권한을 부여하게 됩니다. 이 권한을 올바르게 설정하는 것이 매우 중요합니다. 아래에서 권한을 부여하는 올바른 방법을 안내합니다.
- 일반적으로 사용자들은 다음과 같은 방식으로 권한을 부여합니다.
chgrp -R www-data /username/home/Dropbox/myamazingsite/ chmod -R 2750 /username/home/Dropbox/myamazingsite/
- 그러나 위 명령어는 잘못된 것이며, 아래와 같이 대체해야 합니다.
chgrp -R www-data /username chmod -R 2750 /username
- 또한 올바른 수준의 “chmod”를 사용하고 있는지 확인하세요. 사용자에게 읽기 권한을 제공하는 “chmod 755”와 같은 옵션을 사용하는 것이 좋습니다.
- 위 방법들을 적용한 후 문제가 지속되는지 확인합니다.
해결 방법 3: 사용자 이름 추가
“httpd.conf” 파일에서 “User” 또는 “Group”이라는 단어 대신 자신의 정확한 사용자 이름을 입력했는지 확인하세요. 경우에 따라 사용자 이름을 추가하는 것만으로도 문제가 해결됩니다.