Skip to content

feat(nginx): strona błędu 500 per-domena z fallbackiem na generyczną#11

Merged
mpasternak merged 1 commit into
mainfrom
feat/per-domain-500-page
Jun 18, 2026
Merged

feat(nginx): strona błędu 500 per-domena z fallbackiem na generyczną#11
mpasternak merged 1 commit into
mainfrom
feat/per-domain-500-page

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co i dlaczego

W instalacji multi-hosted jeden nginx serwuje N domen (po jednym vhoście z vhost.conf.template). Dotąd error_page 500 /static/500.html był wspólny — wszystkie domeny dostawały tę samą stronę 500. Teraz każda domena ma własną stronę z brandingiem swojej uczelni.

Zmiany

  • error_page 500 przeniesiony z _bpp-locations.conf do vhost.conf.template. Powód: _bpp-locations.conf jest includowany przez nginx dosłownie (render script puszcza envsubst tylko na vhost.conf.template), więc ${VHOST_NAME} da się użyć wyłącznie w templacie.
  • Każdy vhost: internal location = /__bpp_500__ z try_files /staticroot/500/<host>.html → /staticroot/500.html → =500. Per-domena gdy istnieje; generyczny fallback gdy nie (zgodny z obrazami pre-multi-hosted); twardy =500 na koniec.

Skąd pliki

Produkuje je appserver w runtime: manage.py generate_500_page zapisuje do $STATIC_ROOT (wolumen staticroot, widziany przez nginx pod /var/www/html/staticroot/). Parę aplikacyjna: iplweb/bpp feat/per-domain-500-page (PR #379).

Uwaga

Per-domenowy plik trafia tylko gdy Site.domain == ${VHOST_NAME} z DJANGO_BPP_HOSTNAMES. Niedopasowanie → cichy, bezpieczny fallback na generyczną stronę.

🤖 Generated with Claude Code

W instalacji multi-hosted każda domena (Site/Uczelnia) ma własną stronę 500
z brandingiem swojej uczelni.

- error_page 500 przeniesiony z _bpp-locations.conf (includowany dosłownie,
  bez envsubst — nie da się tam użyć ${VHOST_NAME}) do vhost.conf.template,
  gdzie render script podstawia ${VHOST_NAME} przez envsubst.
- Każdy vhost: internal location /__bpp_500__ z try_files
  /staticroot/500/<host>.html -> /staticroot/500.html -> =500. Per-domena gdy
  istnieje, generyczny fallback gdy nie (zgodny z obrazami pre-multi-hosted).

Pliki produkuje appserver: manage.py generate_500_page w $STATIC_ROOT.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mpasternak mpasternak merged commit faa4e68 into main Jun 18, 2026
5 checks passed
@mpasternak mpasternak deleted the feat/per-domain-500-page branch June 18, 2026 09:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant