본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
CodeDeck AI
2025. 11. 8. · 10 Views
Apache 웹서버 기초부터 심화까지
Apache 웹서버의 핵심 개념부터 고급 설정까지 다루는 완벽 가이드입니다. 기본 설정, 가상 호스트, 보안, 성능 최적화 등 실무에서 필요한 모든 Apache 설정을 실제 예제와 함께 학습합니다.
들어가며
이 글에서는 Apache 웹서버 기초부터 심화까지에 대해 상세히 알아보겠습니다. 총 12가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.
목차
- Apache_기본_설정
- 가상_호스트_설정
- htaccess_활용
- SSL_인증서_설정
- URL_리라이팅
- 접근_제어_및_인증
- 성능_최적화_설정
- 보안_헤더_설정
- 로그_관리_및_분석
- 프록시_및_리버스_프록시
- MPM_설정_최적화
- 캐시_설정
1. Apache 기본 설정
개요
Apache의 핵심 설정 파일인 httpd.conf의 기본 구조와 필수 디렉티브를 이해합니다. ServerName, DocumentRoot 등 기본 설정을 통해 웹서버의 기초를 다집니다.
코드 예제
ServerName example.com
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
설명
ServerName으로 도메인을 지정하고, DocumentRoot로 웹 문서 경로를 설정합니다. Directory 블록에서 해당 경로의 접근 권한과 옵션을 제어합니다.
2. 가상 호스트 설정
개요
하나의 Apache 서버에서 여러 도메인을 운영할 수 있는 가상 호스트 설정입니다. 포트 기반과 네임 기반 가상 호스트를 구성할 수 있습니다.
코드 예제
<VirtualHost *:80>
ServerName site1.com
DocumentRoot "/var/www/site1"
ErrorLog "logs/site1-error.log"
CustomLog "logs/site1-access.log" combined
</VirtualHost>
설명
VirtualHost 블록으로 개별 사이트를 정의하고, 각 사이트마다 별도의 DocumentRoot와 로그 파일을 지정하여 독립적으로 관리합니다.
3. htaccess 활용
개요
.htaccess 파일로 디렉토리별 설정을 동적으로 제어합니다. URL 리다이렉션, 접근 제어, MIME 타입 설정 등을 수행할 수 있습니다.
코드 예제
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Options -Indexes
DirectoryIndex index.html index.php
설명
RewriteEngine으로 HTTP를 HTTPS로 자동 리다이렉트하고, Options -Indexes로 디렉토리 목록 노출을 방지합니다. 보안과 SEO를 동시에 개선합니다.
4. SSL 인증서 설정
개요
HTTPS를 위한 SSL/TLS 인증서 설정입니다. Let's Encrypt 또는 상용 인증서를 Apache에 적용하여 안전한 통신을 구현합니다.
코드 예제
<VirtualHost *:443>
ServerName secure.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/cert.pem
SSLCertificateKeyFile /etc/ssl/private/key.pem
SSLCertificateChainFile /etc/ssl/certs/chain.pem
</VirtualHost>
설명
443 포트에서 SSLEngine을 활성화하고, 인증서 파일 경로를 지정합니다. 인증서, 개인키, 체인 파일을 정확히 설정해야 HTTPS가 작동합니다.
5. URL 리라이팅
개요
mod_rewrite 모듈을 사용한 고급 URL 변환입니다. 사용자 친화적인 URL 구조를 만들고, 레거시 URL을 새 구조로 매핑합니다.
코드 예제
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^user/([a-zA-Z0-9]+)$ profile.php?id=$1 [L,QSA]
설명
실제 파일이나 디렉토리가 아닌 경우, /user/john 같은 깔끔한 URL을 profile.php?id=john으로 내부 변환합니다. SEO와 사용자 경험을 개선합니다.
6. 접근 제어 및 인증
개요
특정 디렉토리나 파일에 대한 접근을 제한하고, 기본 인증을 구현합니다. IP 기반 제어와 사용자 인증을 결합할 수 있습니다.
코드 예제
<Directory "/var/www/admin">
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require valid-user
Require ip 192.168.1.0/24
</Directory>
설명
Basic 인증으로 사용자명/비밀번호를 요구하고, 특정 IP 대역에서만 접근을 허용합니다. 관리자 페이지 보호에 유용합니다.
7. 성능 최적화 설정
개요
Apache의 성능을 향상시키는 핵심 설정입니다. 압축, 캐싱, KeepAlive 등을 통해 응답 속도와 처리량을 개선합니다.
코드 예제
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
</IfModule>
설명
KeepAlive로 연결 재사용을 활성화하고, mod_deflate로 텍스트 기반 콘텐츠를 압축합니다. 네트워크 대역폭을 절약하고 로딩 속도를 크게 향상시킵니다.
8. 보안 헤더 설정
개요
웹 애플리케이션의 보안을 강화하는 HTTP 헤더를 설정합니다. XSS, 클릭재킹, MIME 스니핑 공격을 방어합니다.
코드 예제
<IfModule mod_headers.c>
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Strict-Transport-Security "max-age=31536000"
</IfModule>
설명
보안 헤더로 iframe 삽입 차단, MIME 타입 변조 방지, XSS 공격 차단을 수행합니다. HSTS로 HTTPS 사용을 강제하여 중간자 공격을 방어합니다.
9. 로그 관리 및 분석
개요
Apache의 접근 로그와 에러 로그를 효과적으로 관리합니다. 커스텀 로그 포맷으로 필요한 정보만 기록하여 분석합니다.
코드 예제
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
CustomLog "logs/access.log" combined
ErrorLog "logs/error.log"
LogLevel warn
설명
combined 포맷으로 IP, 요청, 상태코드, 리퍼러, 사용자 에이전트를 기록합니다. LogLevel로 로그 상세도를 조절하여 디스크 사용량을 관리합니다.
10. 프록시 및 리버스 프록시
개요
Apache를 리버스 프록시로 설정하여 백엔드 서버를 보호하고 로드밸런싱을 구현합니다. Node.js, Python 등 다른 서버와 연동합니다.
코드 예제
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass /api http://localhost:3000/api
ProxyPassReverse /api http://localhost:3000/api
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>
설명
/api 경로는 3000 포트의 Node.js로, 나머지는 8080 포트로 전달합니다. ProxyPreserveHost로 원본 호스트명을 유지하여 백엔드가 올바른 요청을 처리하게 합니다.
11. MPM 설정 최적화
개요
Multi-Processing Module(MPM) 설정으로 Apache의 동시 처리 성능을 조정합니다. prefork, worker, event 모드 중 환경에 맞게 선택합니다.
코드 예제
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 1000
</IfModule>
설명
event MPM으로 비동기 처리를 활성화하고, 워커 수를 조정하여 메모리와 성능의 균형을 맞춥니다. 트래픽 패턴에 따라 값을 튜닝해야 합니다.
12. 캐시 설정
개요
mod_cache를 활용한 서버 사이드 캐싱으로 반복적인 요청 처리 속도를 대폭 향상시킵니다. 정적/동적 콘텐츠 모두 캐싱 가능합니다.
코드 예제
<IfModule mod_cache.c>
CacheEnable disk /
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDefaultExpire 3600
CacheMaxFileSize 1000000
CacheIgnoreNoLastMod On
</IfModule>
설명
디스크 캐시를 활성화하여 1MB 이하 파일을 1시간 동안 캐싱합니다. 데이터베이스 쿼리 결과나 API 응답을 캐싱하여 백엔드 부하를 크게 감소시킵니다.
마치며
이번 글에서는 Apache 웹서버 기초부터 심화까지에 대해 알아보았습니다. 총 12가지 개념을 다루었으며, 각각의 사용법과 예제를 살펴보았습니다.
관련 태그
#Apache #VirtualHost #htaccess #SSL #ModRewrite
댓글 (0)
함께 보면 좋은 카드 뉴스
AWS Certificate Manager로 HTTPS 인증서 발급 완벽 가이드
AWS Certificate Manager를 사용하여 무료로 SSL/TLS 인증서를 발급받고, 로드 밸런서에 적용하여 안전한 HTTPS 웹 서비스를 구축하는 방법을 초급자도 쉽게 따라 할 수 있도록 단계별로 안내합니다.
Route 53으로 도메인 연결 완벽 가이드
AWS Route 53을 사용하여 도메인을 등록하고 실제 서비스에 연결하는 전 과정을 실무 스토리와 함께 쉽게 배워봅니다. DNS의 기본 개념부터 레코드 설정, ELB 연결까지 초급 개발자도 쉽게 따라할 수 있도록 구성했습니다.
AWS RDS 관리형 데이터베이스 완벽 가이드
직접 데이터베이스를 설치하고 관리하는 것이 부담스러운 초급 개발자를 위한 RDS 가이드입니다. 데이터베이스 엔진 선택부터 인스턴스 생성, 보안 설정, 백업까지 실무에 필요한 모든 내용을 다룹니다.
AWS Auto Scaling 완벽 가이드
트래픽 급증에 대비하는 자동 확장 시스템을 단계별로 구축합니다. AMI 생성부터 Auto Scaling Group 설정, 테스트까지 초급 개발자를 위해 실무 중심으로 설명합니다.
AWS 로드 밸런서와 보안 그룹으로 트래픽 분산 구성 완벽 가이드
초급 개발자를 위한 AWS 로드 밸런서와 보안 그룹 실습 가이드입니다. Application Load Balancer와 Network Load Balancer의 차이부터 보안 그룹 설정, 대상 그룹 생성, 실제 EC2 연결까지 실무에 필요한 모든 내용을 이북처럼 술술 읽히는 스타일로 담았습니다.