아파치 설정 생성기
Apache VirtualHost 설정 파일 생성
📖 .htaccess vs VirtualHost, 왜 성능 차이가 나나 가이드 보기
Apache VirtualHost란?
Apache VirtualHost는 하나의 웹서버에서 여러 도메인을 독립적으로 호스팅할 수 있게 해주는 설정 블록입니다. 각 VirtualHost는 독립적인 DocumentRoot, 로그 파일, SSL 인증서, 접근 제어를 가질 수 있으며, /etc/apache2/sites-available/ 디렉토리에 도메인별 파일로 관리합니다. 이 도구는 SSL을 켜면 포트 80 VirtualHost를 HTTPS로만 리다이렉트하는 블록으로 만들고, PHP 설정은 실제로 요청을 처리하는 포트 443 블록에만 추가합니다(포트 80은 리다이렉트만 하므로 PHP를 넣어도 실행될 일이 없기 때문). a2enmod·a2ensite·apache2ctl 명령어는 Debian/Ubuntu 계열 전용이며, RHEL/CentOS/Fedora 계열은 httpd 서비스와 conf.d/ 디렉토리를 사용해 방식이 다릅니다.
자주 묻는 질문
Q. mod_rewrite를 활성화하는 방법은?
A. sudo a2enmod rewrite 명령어를 실행하고 Apache를 재시작합니다. VirtualHost 설정에서 AllowOverride All이 되어 있어야 .htaccess의 RewriteRule이 동작합니다.
Q. SSL 인증서 설정 방법은?
A. Let's Encrypt 사용 시 sudo certbot --apache -d example.com으로 자동 설정됩니다. 수동으로는 SSLCertificateFile과 SSLCertificateKeyFile 경로를 지정하고 sudo a2enmod ssl을 실행하세요.
Q. AllowOverride All의 의미는?
A. .htaccess 파일이 서버 설정을 재정의할 수 있도록 허용합니다. 개발 환경에서는 All, 프로덕션에서는 필요한 지시어만 허용하는 것이 보안상 좋습니다. None으로 설정하면 .htaccess가 완전히 무시됩니다.
Q. .htaccess vs VirtualHost 중 어느 것을 사용해야 하나요?
A. 가능하면 VirtualHost에 설정을 넣는 것이 성능상 유리합니다. .htaccess는 요청마다 파일을 읽지만 VirtualHost 설정은 서버 시작 시 한 번만 읽힙니다. 서버 설정 파일에 접근할 수 없는 공유 호스팅에서는 .htaccess를 사용합니다.
Q. mod_deflate(GZIP) 설정 방법은?
A. sudo a2enmod deflate로 모듈을 활성화하고 AddOutputFilterByType 또는 SetOutputFilter DEFLATE 지시어를 사용합니다. 압축 전/후 크기를 비교하면 보통 50~70% 절감 효과를 볼 수 있습니다.
Q. ProxyPass 설정 시 필요한 모듈은?
A. sudo a2enmod proxy proxy_http를 실행해 프록시 모듈을 활성화해야 합니다. WebSocket 지원이 필요하면 proxy_wstunnel도 함께 활성화합니다.
Q. Apache 로그 파일 위치는?
A. 기본적으로 /var/log/apache2/ 디렉토리에 access.log와 error.log가 저장됩니다. VirtualHost별로 CustomLog와 ErrorLog 경로를 지정하면 도메인별로 분리된 로그를 관리할 수 있습니다.
Q. 새 VirtualHost 설정을 활성화하는 방법은?
A. Debian/Ubuntu 계열은 sudo a2ensite example.com.conf로 사이트를 활성화하고 sudo systemctl reload apache2로 적용하며, sudo apache2ctl configtest로 문법을 미리 검사할 수 있습니다. RHEL/CentOS/Fedora 계열은 a2enmod/a2ensite가 없으므로 설정 파일을 /etc/httpd/conf.d/에 직접 배치하고 sudo systemctl reload httpd로 적용합니다.