웹 서버와 웹 컨테이너를 적절히 분리함으로써 정적 페이지와 동적 페이지의 처리를 효과적으로 다룰 수 있다.

클라이언트가 요청을 하였을때 웹서버가 정적페이지인지 동적페이지인지 구분하여 해당 파일을 가지고 있다면 파일을 찾아서 응답한다.

WAS내부에는 웹서버와 웹 컨테이너가 존재한다. 따라서 트래픽이 많지 않은 소규모의 서비스에서는 웹서버가 필요없다. (WAS만 존재하더라도 정적 페이지 처리 가능)
대규모 트래픽이라면 책임을 분리해주기위해 Web Server와 WAS가 필요하다.
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server backend3.example.com; # 새로운 서버 추가
# 다양한 백엔드 서버들을 추가할 수 있어
# ...
}
server {
location / {
# 기본적인 proxy_pass 설정
proxy_pass http://backend;
# Health Check 설정
health_check;
# Health Check 주기 설정 (예: 5초마다)
health_check_interval 5s;
# 실패 횟수 및 성공 횟수 설정
health_check_fail_timeout 3s;
health_check_healthy_threshold 2;
health_check_unhealthy_threshold 3;
# 추가적인 Health Check 옵션들도 있어
# ...
}
}
}
health_check_healthy_threshold: 이 옵션은 서버를 정상 상태로 간주하는 데 필요한 연속 성공한 Health Check 요청의 횟수를 나타냅니다. 만약 이 횟수만큼의 연속된 성공이 있으면 서버를 정상 상태로 판단합니다.
health_check_unhealthy_threshold: 이 옵션은 서버를 비정상 상태로 간주하는 데 필요한 연속 실패한 Health Check 요청의 횟수를 나타냅니다. 만약 이 횟수만큼의 연속된 실패가 있으면 서버를 비정상 상태로 판단합니다.
health_check_fail_timeout 옵션은 Health Check 요청이 일정 시간 내에 지정된 횟수만큼 실패하면 해당 서버를 비정상 상태로 간주하는 데 사용됩니다.
예를 들어, health_check_fail_timeout 3s;는 Health Check 요청이 3초 동안 성공하지 않으면 해당 요청을 실패로 간주한다는 의미입니다. 만약 이 옵션을 설정하지 않으면 기본값은 2초가 될 수 있으며, 이 시간 동안에 Health Check가 실패하면 해당 서버를 비정상 상태로 간주하게 됩니다.
이 옵션을 설정함으로써 서버의 응답이 일정 시간 이내에 없다면 해당 서버를 문제가 있는 상태로 판단하고 대응할 수 있도록 할 수 있습니다.