managarten/docker/nginx/landings.conf
Till JS 5c04b1d858
Some checks are pending
CD Mac Mini / Deploy (push) Blocked by required conditions
CD Mac Mini / Detect Changes (push) Waiting to run
CI / Detect Changes (push) Waiting to run
CI / Validate (push) Waiting to run
CI / Build mana-search (push) Blocked by required conditions
CI / Build mana-sync (push) Blocked by required conditions
CI / Build mana-api-gateway (push) Blocked by required conditions
CI / Build mana-crawler (push) Blocked by required conditions
Mirror to Forgejo / Push to Forgejo (push) Waiting to run
feat(nginx): cards.* + cardecky.* → wordeck.com 301-Redirect
Cards-zu-Wordeck-Cutover-Phase Ω-6: alte Legacy-Hostnames werden auf
die neue Domain umgeleitet.

- cards.mana.how + cardecky.mana.how → 301 → wordeck.com
- cards-api.mana.how + cardecky-api.mana.how → 301 → api.wordeck.com
- Tote cardecky.com Marketing-Landing entfernt (war nie deployed)

Hinweis: cloudflared routet cardecky.mana.how weiterhin direkt zur
cards-web — alte Native-App (Bundle ev.mana.cardecky) braucht das.
Der 301 hier greift erst, wenn cloudflared umgestellt wird.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 21:58:06 +02:00

170 lines
4.5 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Nginx Configuration for Self-Hosted Landing Pages
# Each server block serves a different landing page from its dist/ directory
# All traffic comes through Cloudflare Tunnel → localhost:4400
# Shared settings
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/json image/svg+xml;
# ============================================
# Cardecky-Migration: 301-Redirects (2026-05-08)
# Alte cards.mana.how / cards-api.mana.how Bookmarks weiterleiten,
# bis sich Nutzer/externe Clients an die neue Domain gewöhnt haben.
# Nach 612 Monaten kann das wieder raus.
# ============================================
server {
listen 80;
server_name cards.mana.how cardecky.mana.how;
return 301 https://wordeck.com$request_uri;
}
server {
listen 80;
server_name cards-api.mana.how cardecky-api.mana.how;
return 301 https://api.wordeck.com$request_uri;
}
# ============================================
# mana e.V. Verein-Landing — kanonische Domain mana-ev.ch
# (Schweizer Verein in Gründung)
# Alle anderen TLDs (.com/.de/.at) und alle www-Varianten
# 301-Redirect auf https://mana-ev.ch.
# Apex `mana-ev.ch` liegt direkt am Astro-Landing-Container :3088,
# nicht hier.
# ============================================
server {
listen 80;
server_name www.mana-ev.ch
mana-ev.com www.mana-ev.com
mana-ev.de www.mana-ev.de
mana-ev.at www.mana-ev.at;
return 301 https://mana-ev.ch$request_uri;
}
# Default server (catch-all → it.mana.how as homepage)
server {
listen 80 default_server;
server_name _;
root /srv/landings/it;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# it.mana.how — European Tech Independence
server {
listen 80;
server_name it.mana.how;
root /srv/landings/it;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# chats.mana.how — Chat Landing
server {
listen 80;
server_name chats.mana.how;
root /srv/landings/chat;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# pics.mana.how — Picture Landing
server {
listen 80;
server_name pics.mana.how;
root /srv/landings/picture;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# quotess.mana.how — Quotes Landing
server {
listen 80;
server_name quotess.mana.how;
root /srv/landings/quotes;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# presis.mana.how — Presi Landing
server {
listen 80;
server_name presis.mana.how;
root /srv/landings/presi;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# clocks.mana.how — Clock Landing
server {
listen 80;
server_name clocks.mana.how;
root /srv/landings/clock;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# food.mana.how — Food Landing
server {
listen 80;
server_name food.mana.how;
root /srv/landings/food;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# citycorners.mana.how — CityCorners Landing
server {
listen 80;
server_name citycorners.mana.how;
root /srv/landings/citycorners;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# docs.mana.how — Documentation
server {
listen 80;
server_name docs.mana.how;
root /srv/landings/docs;
index index.html;
include /etc/nginx/snippets/landing-common.conf;
}
# status.mana.how — Public Status Page (generated by mana-status-gen every 60s)
server {
listen 80;
server_name status.mana.how;
root /srv/landings/status;
index index.html;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Cache-Control "no-store" always;
# Allow ManaScore page to fetch status.json
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET" always;
location / {
try_files $uri /index.html;
}
# Serve status.json directly (do not rewrite to index.html)
location = /status.json {
add_header Content-Type "application/json" always;
add_header Cache-Control "no-store" always;
add_header Access-Control-Allow-Origin "*" always;
try_files $uri =404;
}
location /health {
access_log off;
return 200 "healthy\n";
add_header Content-Type text/plain;
}
}