zioinfo-mail/docker/nginx/guardia.conf
DESKTOP-TKLFCPR\ython eea643ce40 feat(docker): Docker 컨테이너 환경 구성
[파일 목록]
- Dockerfile: GUARDiA ITSM Python 3.11-slim 이미지
  - 비루트(guardia) 계정 실행
  - 헬스체크 내장
- docker-compose.yml: 개발/테스트 풀스택
  - guardia-itsm, nginx, postgres:15, redis:7, ollama/ollama, tomcat:9
  - Ollama 모델은 볼륨 마운트 (이미지 외부)
- docker-compose.prod.yml: 운영 환경 오버라이드
  - 외부 포트 차단, 호스트 경로 마운트
- docker-compose.gpu.yml: NVIDIA GPU 오버라이드
- docker-start.sh: dev|prod|gpu 모드 빠른 시작
- .dockerignore: 보안 파일(.env, *.db) 제외
- docker/nginx/guardia.conf: 리버스 프록시 설정
- docker/tomcat/tomcat-users.xml: opsagent 계정 설정

[폐쇄망 패키지]
- setup/docker_package.sh: 인터넷 서버에서 모든 이미지를 tar.gz로 패키징
- setup/docker_load.sh: 폐쇄망에서 tar.gz 로드 + 즉시 시작 옵션

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-29 19:08:52 +09:00

45 lines
1.2 KiB
Plaintext

upstream guardia_backend {
server guardia:8001;
keepalive 32;
}
server {
listen 80;
server_name _;
client_max_body_size 100M;
# GUARDiA ITSM
location / {
proxy_pass http://guardia_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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_read_timeout 300s;
proxy_send_timeout 300s;
}
# 정적 파일 직접 서빙 (선택 최적화)
# location /static/ {
# alias /app/static/;
# expires 1d;
# add_header Cache-Control "public";
# }
# Ollama/Tomcat 직접 노출 금지
location /api/ollama/ { return 403; }
location /manager/ { return 403; }
}
# HTTPS (인증서 설정 후 활성화)
# server {
# listen 443 ssl http2;
# server_name guardia.example.com;
# ssl_certificate /etc/nginx/ssl/cert.pem;
# ssl_certificate_key /etc/nginx/ssl/key.pem;
# ssl_protocols TLSv1.2 TLSv1.3;
# include /etc/nginx/conf.d/guardia.conf; # location 블록 재사용
# }