spring: boot: admin: client: instance: service-base-url: ${pcp.services.gateway} management-base-url: ${pcp.services.gateway} cloud: gateway: server: # WebFlux-вариант Spring Cloud Gateway (Boot 4 / Spring Cloud 2025.1). webflux: # CORS теперь живёт ТОЛЬКО здесь — единая точка на edge. Раньше дублировался # per-service (pcp-ui-service/WebConfig.kt), но после сворачивания фронта на # gateway браузер ходит к бэкендам строго через него. Страховка от cross-origin # к самому gateway (dev напрямую, LAN-адрес рабочей станции): allowedOriginPatterns # "*" совместим с allowCredentials=true (в отличие от allowedOrigins "*"). globalcors: cors-configurations: '[/**]': allowedOriginPatterns: "*" allowedMethods: "*" allowedHeaders: "*" allowCredentials: true maxAge: 3600 routes: # --- Доменные сервисы. Префикс /api/pcp- СРЕЗАЕТСЯ (StripPrefix=2 убирает # 2 сегмента: api + pcp-), т.е. /api/pcp-tgu/api/plans -> бэкенд /api/plans. # Это ровно семантика прежнего vite-rewrite. Цели берём из реестра pcp.services.*. - id: tgu uri: ${pcp.services.tgu} predicates: - Path=/api/pcp-tgu/** filters: - StripPrefix=2 - id: ballistics uri: ${pcp.services.ballistics} predicates: - Path=/api/pcp-ballistics/** filters: - StripPrefix=2 - id: mission uri: ${pcp.services.mission} predicates: - Path=/api/pcp-mission/** filters: - StripPrefix=2 - id: request uri: ${pcp.services.request} predicates: - Path=/api/pcp-request/** filters: - StripPrefix=2 - id: complex uri: ${pcp.services.complex-mission-service} predicates: - Path=/api/pcp-complex/** filters: - StripPrefix=2 - id: slots uri: ${pcp.services.slots} predicates: - Path=/api/pcp-slots/** filters: - StripPrefix=2 # --- Станции: путь СОХРАНЯЕМ (в vite было без rewrite) — без StripPrefix. - id: stations uri: ${pcp.services.stations} predicates: - Path=/api/stations/** # Catch-all /api/** -> pcp-ui-service СНЯТ: фронт переведён на источники напрямую # (tgu/баллистика/mission), ui-service выводится из эксплуатации. См. # docs/план-перевода-с-pcp-ui-service.md и задачу #40 бэклога. Любой не-матчнутый # /api/** теперь честно отдаёт 404 на gateway, а не молча уходит в умирающий сервис. # Валидация JWT на edge. По умолчанию ВЫКЛЮЧЕНА (anonymous, как сейчас работает фронт). # Для закрытого контура: GATEWAY_JWT_ENABLED=true И задать issuer через env # SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=. # Issuer намеренно НЕ объявлен здесь: пустое значение заставило бы автоконфиг поднимать # JwtDecoder и падать на старте. gateway: security: jwt-enabled: ${GATEWAY_JWT_ENABLED:false} management: endpoints: web: exposure: include: health,info,metrics,prometheus --- spring: config: activate: on-profile: local server: port: ${pcp.ports.gateway:7080} --- spring: config: activate: on-profile: dev server: port: ${pcp.ports.gateway:8080}