Web Server 역할
Web Server가 정적 파일, Reverse Proxy, SSL termination, VirtualHost, 로드밸런싱을 담당하는 방식을 정리한다.
Web Server가 담당하는 구간
Client
-> Web Server
-> WAS
-> Application
-> DBMS
핵심 역할
Web Server는 클라이언트 HTTP 요청을 가장 먼저 받고, 정적 리소스 처리와 프록시, TLS, 라우팅을 담당하는 계층이다.
왜 필요한가
WAS가 HTTP 요청을 직접 받을 수도 있다. Tomcat도 HTTP Connector를 제공한다. 그런데 운영 환경에서는 Web Server를 앞단에 두는 경우가 많다.
주요 이유는 다음과 같다.
| 이유 | 설명 |
|---|---|
| 정적 파일 처리 | 이미지, CSS, JS를 WAS까지 보내지 않고 앞단에서 처리 |
| TLS 종료 | 인증서와 HTTPS 설정을 Web Server에 집중 |
| Reverse Proxy | 내부 WAS 포트를 외부에 직접 노출하지 않음 |
| 라우팅 | 경로 또는 도메인별로 다른 backend에 전달 |
| 로드밸런싱 | 여러 WAS 인스턴스로 요청 분산 |
| 로그 분리 | 외부 요청 로그와 애플리케이션 로그를 분리 |
Web Server가 하는 일
정적 파일 제공
정적 파일은 실행 로직 없이 그대로 내려줄 수 있는 파일이다.
/static/app.css
/images/logo.png
/assets/main.js
정적 파일을 Web Server에서 처리하면 WAS는 애플리케이션 로직에 집중할 수 있다.
Reverse Proxy
Reverse Proxy는 외부 요청을 받아 내부 서버로 전달한다.
Client -> Web Server -> 127.0.0.1:8080(Tomcat)
사용자는 80/443 포트만 보고, 내부 Tomcat 포트는 외부에 직접 노출하지 않는다.
SSL termination
TLS 연결을 Web Server에서 종료하고, 내부 WAS로는 HTTP로 전달하는 구성이 흔하다.
Client --HTTPS--> Web Server --HTTP--> WAS
이 구조에서는 인증서 갱신, TLS 버전, cipher suite, HTTP to HTTPS redirect를 Web Server 설정에서 주로 다룬다.
Virtual Host
하나의 Web Server가 여러 도메인 또는 포트를 처리할 수 있다.
app.example.com -> Tomcat A
admin.example.com -> Tomcat B
static.example.com -> static files
Nginx에서는 server block, Apache HTTP Server에서는 VirtualHost로 다룬다.
제품별 관점
| 항목 | Nginx | Apache HTTP Server |
|---|---|---|
| 가상 서버 | server | <VirtualHost> |
| 경로 매칭 | location | Location, Directory, rewrite rule |
| Reverse Proxy | proxy_pass | ProxyPass, ProxyPassReverse |
| 설정 확인 | nginx -t | httpd -t, apachectl configtest |
| 강점 | 가볍고 단순한 프록시, 고동시성 | 모듈 생태계, 레거시 호환, .htaccess |
점검 포인트
| 확인 항목 | 예시 |
|---|---|
| 포트 | 80, 443을 listen 중인가 |
| 도메인 매칭 | server_name, ServerName이 요청 Host와 맞는가 |
| 프록시 대상 | upstream 주소와 포트가 실제 WAS와 맞는가 |
| TLS | 인증서 경로, chain, 만료일이 정상인가 |
| 로그 | access log에 요청이 찍히는가, error log에 upstream 오류가 있는가 |
관련 블로그 기록
- Apache httpd와 Nginx 차이점 — 두 제품의 처리 모델, 설정 구조, 선택 기준 비교
- NGINX 부하분산 (HTTP / TCP) — Web Server가 upstream으로 트래픽을 나누는 기본 사례
- Apache 2.4.37 서버 버전 정보 제한 — Apache HTTP Server 보안 설정을 점검한 사례
닫기 전 질문
- 이 요청은 Web Server에서 정적 파일로 끝나는가, WAS로 넘어가는가?
- TLS는 Web Server에서 끝나는가, WAS까지 전달되는가?
- Web Server access log에는 찍히는데 WAS 로그에는 없다면 어디를 볼 것인가?