## 응용 예제 ② — upstream 로드 밸런서 4종 (RR / weighted / ip_hash / least_conn)
## 한 번에 한 upstream 블록만 활성화 (나머지는 주석)

## (A) 라운드로빈 (기본)
upstream backend_pool {
    server 127.0.0.1:3000;
    server 127.0.0.1:3001;
}

## (B) 가중치 + 헬스체크 + backup
# upstream backend_pool {
#     server 127.0.0.1:3000 weight=3 max_fails=3 fail_timeout=10s;
#     server 127.0.0.1:3001 weight=1 max_fails=3 fail_timeout=10s;
#     server 127.0.0.1:3002 backup;
# }

## (C) IP 해시 (sticky session)
# upstream backend_pool {
#     ip_hash;
#     server 127.0.0.1:3000;
#     server 127.0.0.1:3001;
# }

## (D) Least Connections
# upstream backend_pool {
#     least_conn;
#     server 127.0.0.1:3000;
#     server 127.0.0.1:3001;
# }

server {
    listen 80;
    server_name _;
    location / {
        proxy_pass http://backend_pool;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    access_log /var/log/nginx/lab-upstream.access.log;
}
