From 5ffb51e119122ea303295e37d156c9d960b5d234 Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Mon, 4 May 2026 15:54:43 +0300 Subject: [PATCH] =?UTF-8?q?fix(admin-ui/nginx):=20proxy=20/admin/*=20?= =?UTF-8?q?=D0=B8=20/swagger-ui|v3/api-docs=20=D0=BD=D0=B0=20writer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit После добавления audit/outbox admin endpoints + Swagger UI они оказались за SPA-fallback'ом — nginx отдавал index.html вместо проксирования на writer. - /api/v1/admin/* (AuditAdminController + OutboxAdminController) → writer. - /swagger-ui*, /v3/api-docs*, /swagger-resources, /webjars/swagger-ui → writer (там springdoc сидит). --- ordinis-admin-ui/nginx.conf | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/ordinis-admin-ui/nginx.conf b/ordinis-admin-ui/nginx.conf index 506cc82..172fa7d 100644 --- a/ordinis-admin-ui/nginx.conf +++ b/ordinis-admin-ui/nginx.conf @@ -29,6 +29,30 @@ server { proxy_pass_request_headers on; } + # /api/v1/admin/* — audit + outbox admin endpoints на writer. + location ~ ^/api/v1/admin/ { + set $backend "ordinis-app.${ORDINIS_NAMESPACE}.svc.${CLUSTER_DOMAIN}"; + proxy_pass http://$backend$request_uri; + proxy_http_version 1.1; + 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_pass_request_headers on; + } + + # Swagger UI + OpenAPI spec на writer (там обвязаны контроллеры). + location ~ ^/(swagger-ui|v3/api-docs|swagger-resources|webjars/swagger-ui) { + set $backend "ordinis-app.${ORDINIS_NAMESPACE}.svc.${CLUSTER_DOMAIN}"; + proxy_pass http://$backend$request_uri; + proxy_http_version 1.1; + 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_pass_request_headers on; + } + # GET → read-api, мутирующие → writer. # FQDN в proxy_pass нужен потому что nginx resolver не использует search list. # Namespace и cluster-domain инжектятся через ENV (см. admin-ui Deployment).