# nginx.conf worker_processes auto; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8000; # 컨테이너 내부에서 8000번 포트로 수신 # Vue.js 정적 파일 서빙 location / { root /usr/share/nginx/html; # Vue.js 빌드 결과물이 복사될 경로 index index.html index.htm; try_files $uri $uri/ /index.html; # Vue Router history mode 지원 } # FastAPI 백엔드 API로 프록시 (FastAPI는 컨테이너 내부에서 8000번 포트로 실행됩니다) # Nginx가 FastAPI 뒤에 있으므로, FastAPI가 8000번 포트로 들어오는 요청을 받습니다. # Vue.js에서 /api/v1/process_youtube_video 로 요청하면, 백엔드로 전달됩니다. # 주의: 여기서는 간단하게 /api 경로로 들어오는 모든 요청을 백엔드로 프록시합니다. # 실제 앱에서는 FastAPI가 동일한 8000번 포트에서 Nginx 없이 직접 실행되거나, # Nginx가 다른 포트로 들어오는 요청을 백엔드 포트(예: 8001)로 프록시하는 형태가 될 수 있습니다. # 여기서는 Nginx가 Vue 정적 파일을 서빙하고, 백엔드는 Nginx를 통하지 않고 # 직접 8000번 포트에서 실행될 것이므로, 이 proxy_pass 부분은 현재 필요 없습니다. # (Uvicorn이 직접 8000번 포트를 사용하고 Nginx는 다른 포트를 사용하는 경우의 예시) # location /api/ { # proxy_pass http://localhost:8000; # FastAPI가 8000번 포트에서 실행 중이라고 가정 # 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; # } # 하지만, 허깅페이스 스페이스 Dockerfile 구성은 보통 Uvicorn이 직접 8000번 포트를 리슨합니다. # Vue 앱은 빌드되어 /usr/share/nginx/html 에 있고, Nginx는 그 정적 파일만 서빙합니다. # API 호출은 Vue 앱에서 직접 Uvicorn으로 이루어집니다 (동일 포트). # 따라서 위 proxy_pass 설정은 이 경우 필요 없습니다. # Dockerfile에서 Nginx를 사용하지 않고 Uvicorn이 Vue 앱의 정적 파일까지 서빙하는 경우가 더 흔합니다. # --- 수정: 허깅페이스 스페이스 Docker 환경에 맞게 Nginx 역할 최소화 --- # 허깅페이스 스페이스는 Docker 컨테이너의 8000번 포트를 외부로 노출합니다. # 일반적으로 Uvicorn(FastAPI)이 이 8000번 포트를 직접 리슨하고, # Vue.js 빌드 결과물은 Uvicorn의 Starlette StaticFiles 기능을 통해 서빙하거나, # Nginx를 별도로 띄워 정적 파일만 서빙하고 API는 직접 Uvicorn으로 보내는 방식입니다. # 여기서는 Uvicorn이 8000번 포트를 리슨하고, Nginx는 별도의 포트에서 정적 파일만 서빙하는 # 복잡한 구성을 피하고, Uvicorn이 모든 것을 처리하도록 구성하는 것이 더 간단합니다. # 잠시 보류하고, 다음 start.sh 스크립트와 함께 설명하겠습니다. # Nginx를 사용하지 않는 것이 더 일반적입니다. # 임시로 이 부분은 주석 처리합니다. # location /api/ { # proxy_pass http://127.0.0.1:8000; # proxy_set_header Host $host; # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # } } }