#!/bin/bash
# 응용 예제 ① — location 매칭 5종 (=, ^~, ~, ~*, prefix)
# 사전: setup.sh 로 nginx + 백엔드 :3000·:3001 띄워둔 상태
set -e

CFG="$(dirname "$0")/configs/02_lab-location-match"

# 1) 정적 자원 + 관리자 디렉토리 준비
sudo mkdir -p /var/www/static
echo '<h1>static logo</h1>' | sudo tee /var/www/static/index.html >/dev/null
sudo mkdir -p /etc/nginx/.htpasswd_dir
# Basic Auth 사용자 (admin / admin123) — 실습용
sudo apt install -y apache2-utils
sudo htpasswd -bc /etc/nginx/.htpasswd admin admin123

# 2) hosts 파일에 가상 도메인 추가
grep -q "api.lab.local" /etc/hosts || echo "127.0.0.1  api.lab.local" | sudo tee -a /etc/hosts

# 3) 설정 배포 + 기존 site 비활성화
sudo cp "$CFG" /etc/nginx/sites-available/lab-location
sudo rm -f /etc/nginx/sites-enabled/lab-proxy
sudo ln -sf /etc/nginx/sites-available/lab-location \
            /etc/nginx/sites-enabled/lab-location

# 4) syntax 검사 + reload
sudo nginx -t
sudo systemctl reload nginx

# 5) 매칭 우선순위 검증
echo
echo "=== 매칭 우선순위 검증 ==="
echo "→ 정확 일치 (=) /healthz"
curl -s http://api.lab.local/healthz
echo
echo "→ 우선 접두사 (^~) /static/index.html"
curl -sI http://api.lab.local/static/index.html | head -3
echo
echo "→ 정규식 (~*) 이미지 — 캐시 헤더"
curl -sI http://api.lab.local/img/test.PNG | head -4
echo
echo "→ 정규식 (~) API 버전 캡처"
curl -sI http://api.lab.local/api/v1/users | head -4
echo
echo "→ 관리자 (Basic Auth)"
curl -s -u admin:admin123 http://api.lab.local/admin/dashboard
echo
echo "→ catch-all"
curl -s http://api.lab.local/anything
