wordeck/apps/landing/infrastructure/nginx.conf
Till JS 751a50347c
Some checks are pending
CI / validate (push) Waiting to run
feat(landing): Cutover-Doku + AASA + 301-Redirects + marketing-kit 0.3.0
- STATUS.md: Landing-Cutover-Notiz (2026-05-22, wordeck.com → Marketing,
  app.wordeck.com → Web-App, robots.txt geöffnet).
- nginx.conf: AASA application/json (beide Bundle-IDs cardecky+wordeck) +
  301-Redirects für d/*, u/*, account, auth/*, cards, decks, study, etc.
- AASA-File statisch in public/.well-known/ kopiert.
- marketing-kit auf ^0.3.0.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 02:29:19 +02:00

56 lines
1.8 KiB
Nginx Configuration File

# nginx config für wordeck-landing — Astro statisch, no SPA fallback.
#
# Astro baut mit format='file' und trailingSlash='never', d.h.
# /anki-import → /anki-import.html. try_files-Kette deckt das ab.
server {
listen 80 default_server;
server_name _;
root /usr/share/nginx/html;
index index.html;
# Plain-Text-Endpoints (Astro-API-Routes wurden als .txt/.xml gebaut).
location = /robots.txt {
default_type "text/plain; charset=utf-8";
try_files $uri =404;
}
location = /llms.txt {
default_type "text/plain; charset=utf-8";
try_files $uri =404;
}
location = /sitemap.xml {
default_type "application/xml; charset=utf-8";
try_files $uri =404;
}
# Apple Universal Links — AASA muss als application/json ausgeliefert
# werden (kein charset-Suffix, keine Redirects). Beide Bundle-IDs:
# ev.mana.cardecky (Legacy) und ev.mana.wordeck (aktuell, ab Ω-3).
location = /.well-known/apple-app-site-association {
default_type "application/json";
try_files $uri =404;
}
# Alt-Bookmarks von wordeck.com (App-Pfade vor dem Subdomain-Switch
# 2026-05-22) → 301 auf app.wordeck.com. Erhält Permalinks und
# klärt Cookie-Scope (App lebt jetzt auf der app-Subdomain).
location ~ ^/(d|u|account|auth|cards|decks|explore|help|import|me|offline|stats|study|datenschutz|privacy)(/.*)?$ {
return 301 https://app.wordeck.com$request_uri;
}
# Canonical paths → .html siblings; unknown paths 404.
location / {
try_files $uri $uri.html $uri/ =404;
}
# Astro asset bundles → long-cache.
location /_astro/ {
expires 1y;
add_header Cache-Control "public, immutable";
}
# Standard MIME-Optimierungen.
gzip on;
gzip_types text/plain text/css text/javascript application/javascript application/json application/xml application/manifest+json image/svg+xml;
gzip_min_length 1024;
}