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로 다룬다.

제품별 관점

항목NginxApache HTTP Server
가상 서버server<VirtualHost>
경로 매칭locationLocation, Directory, rewrite rule
Reverse Proxyproxy_passProxyPass, ProxyPassReverse
설정 확인nginx -thttpd -t, apachectl configtest
강점가볍고 단순한 프록시, 고동시성모듈 생태계, 레거시 호환, .htaccess

점검 포인트

확인 항목예시
포트80, 443을 listen 중인가
도메인 매칭server_name, ServerName이 요청 Host와 맞는가
프록시 대상upstream 주소와 포트가 실제 WAS와 맞는가
TLS인증서 경로, chain, 만료일이 정상인가
로그access log에 요청이 찍히는가, error log에 upstream 오류가 있는가

관련 블로그 기록

닫기 전 질문

  • 이 요청은 Web Server에서 정적 파일로 끝나는가, WAS로 넘어가는가?
  • TLS는 Web Server에서 끝나는가, WAS까지 전달되는가?
  • Web Server access log에는 찍히는데 WAS 로그에는 없다면 어디를 볼 것인가?