개요
Apache 2.2에서 2.4로 업그레이드되면서 접근 제어(Policy), VirtualHost, CGI 모듈 설정 방식이 변경되었습니다. 기존 2.2 설정 파일을 그대로 사용하면 서비스 기동이 실패할 가능성이 높으므로 업그레이드 전 설정 파일 검토가 반드시 필요합니다. 주요 변경사항을 비교표와 예제 코드로 정리합니다.
아파치 2.2에서 2.4로 업그레이드 되면서 일부 설정 파일의 변화가 있었습니다. 내용을 간략히 정리해 보았습니다.
기존 2.2 설정을 유지한 상태로 서비스를 기동하게 되면 서비스 기동이 실패할 확률이 높으므로 설정 파일에 대한 검토가 선행 되어야 합니다.
업그레이드 전 설정 파일 검토 포인트
Apache 2.2에서 2.4로 업그레이드할 때 서비스 중단을 방지하려면 다음 세 가지를 사전에 점검해야 합니다.
첫째, 접근 제어(Policy) 지시자 변경입니다. 2.2에서 사용하던 Order allow,deny / Allow from all 방식은 2.4에서 Require all granted로 교체되었습니다. 기존 설정을 그대로 두면 403 Forbidden 또는 기동 실패가 발생합니다. 둘째, NameVirtualHost 지시자 제거입니다. 2.4에서는 NameVirtualHost *:80이 불필요하며 오히려 경고 메시지를 유발합니다. 셋째, mod_cgid 모듈 비활성화입니다. 2.4에서 CGI 기반 모듈 설정 방식이 변경되어 기존 LoadModule cgid_module 라인을 주석 처리해야 합니다.
설정 파일 수정 후 httpd -t(또는 apachectl configtest) 명령으로 문법 오류를 확인하고 서비스를 기동하면 예기치 않은 장애를 예방할 수 있습니다.
주요 설정 변경사항
주요 설정 차이는 아래와 같습니다.
| Version | 2.2 |
| Policy | Order allow,denyAllow from all |
| Vhosts | NameVirtualHost *:80
<VirtualHost *:80> |
| cgid_modules | LoadModule cgid_module modules/mod_cgid.so |
| Version | 2.4 |
| Policy | Require all granted |
| Vhosts | <VirtualHost testlocalhost:80> DocumentRoot “D:\webapp\testlocalhost” ServerName testlocalhost ErrorLog “logs/testlocalhost -error.log” CustomLog “logs/testlocalhost -access.log” common </VirtualHost> |
| cgid_modules | 주석처리 |
| refer(예시) |
| DocumentRoot /some/local/dir
<Directory /some/local/dir/> #this will also work |
| And inside conf/IPList.conf, you will have individual lines with entries like the following conf/IPList.conf에 아래와 같이 개별 접근 제어할 IP 리스트를 파일로 보관할 수 있으며 2.2의 Allow 대신 Require를 사용하게 되었습니다. Require not ip 10.10.1.23 |
그 외 변경사항은 Apache 공식 업그레이드 가이드에서 확인할 수 있습니다.
참고
참고 문서: Apache 공식 — 2.2에서 2.4로 업그레이드 가이드 · Apache mod_authz_host 공식 문서