이미지 로딩 중...

Apache 웹서버 기초부터 심화까지 - 슬라이드 1/13
C

CodeDeck AI

2025. 11. 8. · 2 Views

Apache 웹서버 기초부터 심화까지

Apache 웹서버의 핵심 개념부터 고급 설정까지 다루는 완벽 가이드입니다. 기본 설정, 가상 호스트, 보안, 성능 최적화 등 실무에서 필요한 모든 Apache 설정을 실제 예제와 함께 학습합니다.


카테고리:JavaScript
언어:JavaScript
난이도:intermediate
메인 태그:#Apache
서브 태그:
#VirtualHost#htaccess#SSL#ModRewrite

들어가며

이 글에서는 Apache 웹서버 기초부터 심화까지에 대해 상세히 알아보겠습니다. 총 12가지 주요 개념을 다루며, 각각의 개념에 대한 설명과 실제 코드 예제를 함께 제공합니다.

목차

  1. Apache_기본_설정
  2. 가상_호스트_설정
  3. htaccess_활용
  4. SSL_인증서_설정
  5. URL_리라이팅
  6. 접근_제어_및_인증
  7. 성능_최적화_설정
  8. 보안_헤더_설정
  9. 로그_관리_및_분석
  10. 프록시_및_리버스_프록시
  11. MPM_설정_최적화
  12. 캐시_설정

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

#Apache#VirtualHost#htaccess#SSL#ModRewrite#JavaScript

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.