# JupyterHub HTTP Proxy 설정
# 이 map 블록은 http 블록 내, server 블록 바깥에 위치해야 합니다.
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

server {
    listen 80;
    server_name jupyter-hub.geumdo.net;
    server_tokens off;

    # 로그 파일 경로
    access_log /var/log/nginx/jupyter-hub-access.log combined;
    error_log  /var/log/nginx/jupyter-hub-error.log error;

    # 클라이언트 요청 크기 제한 (대용량 파일 업로드 허용)
    client_max_body_size 100m;

    location / {
        # MicroK8s 노드의 Ingress Controller로 프록시
        proxy_pass http://192.168.0.70:80;

        # --- JupyterHub에 필요한 헤더 설정 ---
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # --- WebSocket 연결을 위한 설정 (JupyterLab 실시간 통신용) ---
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        
        # 연결 타임아웃 설정
        proxy_read_timeout 86400s;
        proxy_send_timeout 86400s;
        proxy_connect_timeout 60s;

        # 버퍼 설정
        proxy_buffering off;
        proxy_request_buffering off;
    }

    # 정적 파일 캐싱 (선택사항)
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        proxy_pass http://192.168.0.70:80;
        proxy_set_header Host $host;
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
} 