# itms.zioinfo.co.kr — ITMS 리버스 프록시 (개발서버, Stage B 라이브 반영) # 서버(101.79.17.164). 브라우저 진입점 = front(:11020). # # 구성 (Stage B — 웹 + 모바일 동시 지원): # - front(:11020) : 브라우저 JSP 화면 (세션 기반). 기본 경로. # - auth(:11000) : OAuth2 인가서버. 모바일 password/refresh grant → /oauth/. # - api(:11010) : 업무 REST(Bearer JWT). 모바일 앱이 도메인 경유 직접 호출. # # ★경로 충돌 해소(실측): front 와 api 가 동일 prefix(/main·/srm·/rem·/sys·/potl 등)를 # 각각 화면(11020)·REST(11010)로 제공한다. 순수 경로 분기 불가 → **Authorization: Bearer # 헤더**로 분기($itms_biz_backend map). 모바일은 항상 Bearer 전송(→api), 브라우저는 세션 # 쿠키(무 Bearer→front). 이로써 웹/모바일이 한 도메인에서 공존. # ※ 모바일 앱(workspace/itms/mobile)은 '/api/' prefix 가 아니라 **루트 업무 prefix** # (/oauth·/main·/srm·/rem·/bbs·/cmm·/sta·/sys·/potl)를 사용한다(constants/Config.ts 권위). # # 선결: front/auth/api 기동 + certbot(--nginx -d itms.zioinfo.co.kr). 미기동 시 502. # 모바일(Bearer JWT)=api(:11010) / 브라우저(세션)=front(:11020) 헤더 기반 분기 map $http_authorization $itms_biz_backend { default http://127.0.0.1:11020; "~*^Bearer " http://127.0.0.1:11010; } server { listen 80; server_name itms.zioinfo.co.kr; location / { return 301 https://$host$request_uri; } } server { listen 443 ssl; server_name itms.zioinfo.co.kr; ssl_certificate /etc/letsencrypt/live/itms.zioinfo.co.kr/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/itms.zioinfo.co.kr/privkey.pem; client_max_body_size 50m; # 통합 메신저 앱 QR 다운로드 페이지(읽기전용, 중앙 ITSM APK 저장소 재사용) location = /mobile-app { alias /opt/itms/static/mobile-app.html; default_type text/html; } # OAuth2 인가서버(:11000) — 모바일 password/refresh grant location /oauth/ { proxy_pass http://127.0.0.1:11000; 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; } # 업무 REST(:11010, Bearer) vs 프론트 화면(:11020, 세션) — Authorization 헤더로 분기 location ~ ^/(main|srm|rem|bbs|cmm|sta|sys|potl)/ { proxy_pass $itms_biz_backend$request_uri; 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; } # 웹 UI (front :11020) — 브라우저 진입점(기본) location / { proxy_pass http://127.0.0.1:11020; 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; } }