o2o-negosium-original/lps-admin/nginx.conf
민헌 dc8c288f68 feat(lps): docker-compose 에 lps-admin 추가 + 환경설정 config.local.toml 단일화
- lps-admin 컨테이너화: Vite 정적 빌드 → nginx, /v1·/healthz·/readyz 를
  lps-api:9600 으로 동일출처 프록시(빌드 타임 API URL 주입 불필요)
- lps-api/worker: APP_ENV=local 고정 + DB_HOST override(도메인 backend·negodata·agent
  와 동일 패턴), config.<env>.toml 마운트 방식 폐기
- server_configs 에 DB 접속 env override(_apply_db_env_override) 복원
- config.dev/prod.toml.example 제거 — 환경 구분 없이 config.local.toml 하나
  (prod 서버도 그 서버의 config.local.toml + docker compose up -d)
- run_docker.sh 환경 선택 제거·lps-admin 포함, README·operations 문서 갱신

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-16 11:54:32 +09:00

52 lines
1.8 KiB
Nginx Configuration File

# LPS 관리자 UI — 정적 SPA 서빙 + LPS API 동일출처 프록시.
# 브라우저는 이 오리진(:3400)만 보고, /v1·/healthz·/readyz 는 여기서 lps-api:9600 으로 넘긴다.
# (vite dev 서버의 proxy 설정과 동일한 대상·경로 — 개발/운영 동작 일치)
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# gzip — 번들·JSON 응답 전송량 절감
gzip on;
gzip_types text/css application/javascript application/json image/svg+xml;
gzip_min_length 1024;
# ── API 프록시 (lps-api:9600) ──
# 도커 임베디드 DNS(127.0.0.11)로 매 요청 재해석 → lps-api 재시작(새 IP)에도 502 없이 따라간다.
# proxy_pass 에 경로를 두지 않아 원본 요청 URI 를 그대로 전달한다(/v1/lps/ops → 동일 경로).
resolver 127.0.0.11 valid=30s ipv6=off;
location /v1/ {
set $lps_api http://lps-api:9600;
proxy_pass $lps_api;
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;
proxy_read_timeout 120s; # 테스트 검색 등 긴 폴링 여유
}
location = /healthz {
set $lps_api http://lps-api:9600;
proxy_pass $lps_api;
}
location = /readyz {
set $lps_api http://lps-api:9600;
proxy_pass $lps_api;
}
# ── SPA 라우팅 — 정적 파일 없으면 index.html 로 폴백 ──
location / {
try_files $uri $uri/ /index.html;
}
# 정적 자산 캐시(해시 파일명이라 장기 캐시 안전). index.html 은 캐시 안 함.
location /assets/ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}