Apache
기본 정보
- 이름: Apache HTTP Server
- 약칭: Apache
- 분류: 웹 서버(Web Server)
- 개발 기관: Apache Software Foundation
- 최초 공개: 1995년
- 라이선스: Apache License 2.0
- 주요 용도: 웹사이트 및 웹 애플리케이션 서비스
- 관련 주제: #Apache #웹서버 #HTTP #Linux #PHP
개요
Apache HTTP Server는 세계에서 가장 널리 사용되는 오픈소스 웹 서버 소프트웨어 중 하나이다.
웹 브라우저의 HTTP/HTTPS 요청을 받아 HTML, CSS, JavaScript, 이미지 등의 정적 파일을 제공하며, PHP·Python·Perl 등의 서버 프로그램과 연동하여 동적 웹페이지를 서비스할 수 있다.
Linux, Windows, macOS 등 다양한 운영체제에서 실행 가능하다.
주요 특징
- 오픈소스
- 크로스 플랫폼 지원
- HTTP 및 HTTPS 지원
- Virtual Host 지원
- URL Rewrite 지원
- 모듈 확장 가능
- PHP 연동 가능
- SSL/TLS 지원
동작 구조
브라우저
↓
HTTP / HTTPS
↓
Apache Web Server
├── 정적 파일
├── PHP
├── CGI
├── Rewrite
└── SSL
↓
Application
↓
Database
주요 역할
- HTML 제공
- CSS 제공
- JavaScript 제공
- 이미지 제공
- 파일 다운로드
- URL 라우팅
- PHP 실행
- SSL 처리
- 접근 제어
설치 위치(Linux)
/
/etc/httpd/
/etc/apache2/
/var/www/html/
/var/log/httpd/
운영체제에 따라 경로가 다를 수 있다.
주요 설정 파일
httpd.conf
apache2.conf
ports.conf
ssl.conf
가상 호스트(VirtualHost)는 별도 설정 파일로 관리하는 경우가 많다.
VirtualHost
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
</VirtualHost>
하나의 서버에서 여러 도메인을 운영할 수 있다.
DocumentRoot
DocumentRoot "/var/www/html"
웹사이트의 기본 경로를 지정한다.
Directory 설정
<Directory "/var/www/html">
AllowOverride All
Require all granted
</Directory>
디렉터리 접근 권한을 설정한다.
.htaccess
RewriteEngine On
RewriteRule ^board/(.*)$ board.php?id=$1 [L]
디렉터리별 설정을 적용할 수 있다.
주요 기능
- URL Rewrite
- 접근 제한
- 리디렉션
- 캐시 설정
- 압축 설정
mod_rewrite
URL 변경
RewriteRule
^member$
member.php
[L]
SEO 친화적인 URL 구성에 많이 사용된다.
SSL 설정
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile cert.pem
SSLCertificateKeyFile key.pem
</VirtualHost>
HTTPS 서비스를 위한 설정이다.
로그
Access Log
access.log
Error Log
error.log
운영 중 오류 분석에 중요한 자료이다.
PHP 연동
Apache는 PHP와 함께 많이 사용된다.
Browser
↓
Apache
↓
PHP
↓
MySQL
↓
Response
대표 CMS
대표 모듈
- mod_rewrite
- mod_ssl
- mod_headers
- mod_proxy
- mod_deflate
- mod_expires
- mod_security
성능 최적화
대표 방법
- KeepAlive 설정
- Gzip 압축
- Cache-Control 설정
- Expires 설정
- HTTP/2 활성화
- OPcache 사용
- PHP-FPM 연동
보안 설정
권장 사항
- ServerTokens 최소화
- ServerSignature Off
- 디렉터리 목록 비활성화
- HTTPS 적용
- 불필요한 모듈 제거
- 최신 버전 유지
- 접근 권한 최소화
Apache와 Nginx 비교
| Apache | Nginx |
|---|---|
| Process 기반 | Event 기반 |
.htaccess 지원 | .htaccess 미지원 |
| PHP 연동 쉬움 | Reverse Proxy에 강점 |
| 설정 유연 | 고성능 처리 |
| 소규모~중규모 서비스 적합 | 대규모 트래픽 처리에 강점 |
주요 활용 분야
- 기업 홈페이지
- 블로그
- 쇼핑몰
- 게시판
- API 서버
- ERP
- CMS
- 파일 서버
장점
- 안정성이 높음
- 풍부한 모듈 제공
.htaccess지원- PHP와 뛰어난 호환성
- 다양한 운영체제 지원
- 커뮤니티와 자료가 풍부함
단점
- 대량 동시 접속에서는 Nginx보다 불리할 수 있음
- 설정이 복잡해질 수 있음
- 메모리 사용량이 상대적으로 큰 편
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
- HTTP/2 활성화
- HTTPS 기본 적용
- Gzip 압축 활성화
- KeepAlive 활성화
- OPcache 사용
- PHP-FPM 연동
- Access/Error Log 주기적 관리
.htaccess남용 지양- VirtualHost 분리 관리
- Fail2Ban 등 보안 도구 적용
Apache와 함께 사용하는 기술
대표 명령어
서비스 시작
systemctl start httpd
서비스 중지
systemctl stop httpd
재시작
systemctl restart httpd
설정 검사
apachectl configtest
관련 문서
출처
- Apache HTTP Server 공식 홈페이지
- Apache HTTP Server 공식 문서
- Apache Software Foundation 자료