| 구분 | Apache HTTP Server | Nginx (엔진엑스) |
|---|---|---|
| 개발 시기 | 1995년 (오래됨, 안정적) | 2004년 (현대적, 고성능) |
| 동작 방식 | 프로세스/스레드 기반 요청마다 새로운 프로세스 또는 스레드를 생성하여 처리. | 이벤트 기반 (Event-Driven) 하나 또는 적은 수의 프로세스로 여러 연결을 비동기적으로 처리. |
| 성능 | • 동시 접속자 수가 많아지면 메모리 사용량 급증, 성능 저하. • 다양한 모듈로 기능 확장이 매우 유연함. | • 동시 접속 처리에 매우 강력함 (C10K 문제 해결). • 적은 메모리로 높은 성능을 냄. |
| 주요 용도 | • 전통적인 웹 호스팅 환경. • 다양한 기능이 필요한 복잡한 웹 애플리케이션. | • 리버스 프록시(Reverse Proxy), 로드 밸런서. • 대규모 트래픽을 처리하는 현대적인 웹 서비스. |
웹 서버의 동작은 설정 파일을 통해 제어됩니다. 웹 마스터는 이 설정 파일의 구조와 주요 지시어(Directive)를 이해하고 수정할 수 있어야 합니다.
Apache: httpd.conf
Nginx: nginx.conf
nginx.conf)// 전역 설정
user nginx;
worker_processes auto; // CPU 코어 수에 맞게 자동으로 프로세스 수 조절
events {
worker_connections 1024; // 프로세스당 처리할 수 있는 동시 연결 수
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
// ... 로그, 캐시 등 공통 설정 ...
// 가상 호스트(서버 블록) 설정
server {
listen 80; // 80번 포트에서 요청을 기다림
server_name example.com www.example.com; // 이 도메인으로 들어온 요청을 처리
location / {
root /usr/share/nginx/html; // 웹 문서의 최상위 디렉토리
index index.html index.htm; // 기본으로 보여줄 파일
}
// /api/ 경로로 들어온 요청은 8080 포트의 WAS로 전달 (리버스 프록시)
location /api/ {
proxy_pass http://localhost:8080;
}
}
}
server 블록: 하나의 웹사이트(가상 호스트)에 대한 설정을 정의합니다.location 블록: 특정 URL 경로에 대한 처리 방식을 정의합니다.HTTP (HyperText Transfer Protocol)는 웹에서 데이터를 주고받는 기본 프로토콜이지만, 모든 데이터를 평문(Plain Text)으로 전송하여 중간에 누군가 엿보거나(도청), 데이터를 변조할 위험이 있습니다.
HTTPS (HTTP Secure):
역할: HTTPS의 "인증" 기능을 수행하는 "디지털 신분증"입니다.
발급: 인증 기관(Certificate Authority, CA)이라는 신뢰할 수 있는 제3자 기관(e.g., Let's Encrypt, GoDaddy)이 해당 도메인의 소유권을 확인한 후 발급해줍니다.
동작 원리 (간략화):
example.com? 너의 신분증(인증서) 좀 보여줘."웹 마스터의 역할: 웹사이트에 HTTPS를 적용하기 위해, 도메인에 대한 SSL 인증서를 발급받고, 이를 웹 서버(Nginx, Apache)나 로드 밸런서(AWS ALB)에 설치하여 443 포트(HTTPS 기본 포트)를 활성화하는 작업을 수행해야 합니다.
nginx.conf와 같은 설정 파일을 통해 가상 호스트, 문서 루트, 리버스 프록시 등을 설정할 수 있어야 합니다.