1.7 KiB
1.7 KiB
Reverse proxy a Swagger (ROOT_PATH)
Tato služba běží v AppFactory za reverzní proxy (Caddy) na veřejné cestě:
https://services.csbot.cz/apps/idoklad
Jak Caddy předává requesty
Caddy používá handle_path, který prefix /apps/idoklad odstraní dříve, než
request dorazí do containeru. Container tedy přijímá routy bez prefixu:
veřejně: GET /apps/idoklad/contacts
container: GET /contacts
Důsledek: HttpRequest.PathBase je uvnitř containeru prázdný, protože příchozí
cesta už prefix neobsahuje. Nelze z něj proto odvodit veřejnou cestu pro OpenAPI.
Konfigurace v Program.cs
ROOT_PATH(env, např./apps/idoklad) je jediný spolehlivý zdroj veřejného prefixu.- Z
ROOT_PATHse sestavípublicPrefix(normalizovaný, s úvodním lomítkem). UsePathBase(publicPrefix)je zahandle_pathno-op, ale ponechán pro případ proxy, která prefix nestrhává (handle), aby routy stále seděly.- OpenAPI
servers[0].urlse vPreSerializeFiltersnastaví napublicPrefix(fallback naPathBase, nakonec/pro lokální běh).
Díky tomu Swagger UI „Try it out" volá …/apps/idoklad/<endpoint>, ne kořen domény.
Ověření
| Kontrola | Lokálně (bez ROOT_PATH) | S ROOT_PATH=/apps/idoklad |
|---|---|---|
GET /health |
200 | 200 |
GET /docs (Swagger UI) |
200 | 200 |
GET /docs/v1/swagger.json |
200 | 200 |
servers[0].url v OpenAPI |
/ |
/apps/idoklad |
Veřejně po deploy ověř:
GET https://services.csbot.cz/apps/idoklad/health
GET https://services.csbot.cz/apps/idoklad/docs
a ve Swagger UI, že „Try it out" cílí na https://services.csbot.cz/apps/idoklad/<endpoint>.