diff --git a/nginx/pushkinohistory.ru.conf b/nginx/pushkinohistory.ru.conf index 087d657..ee69f21 100644 --- a/nginx/pushkinohistory.ru.conf +++ b/nginx/pushkinohistory.ru.conf @@ -1,15 +1,19 @@ -# pushkinohistory.ru — Vite+React (v2) -# Container: pushkinohistory-ru-v2 on 127.0.0.1:4146 -# v2 cutover: 2026-05-21 (старый WP на :4143 оставлен в /opt/docker/sites/pushkinohistory-ru как backup) +# pushkinohistory.ru — Astro v2 +# Container: pushkinohistory-ru-v2 (nginx:alpine + Astro SSG) on 127.0.0.1:4146 +# v2 cutover: 2026-05-21 (старый WP на :4143 оставлен в /opt/docker/sites/pushkinohistory-ru как backup для отката) -# 301-редиректы со старых URL-encoded WP slugs (cyrillic) на новые транслитерированные. -# nginx уже декодирует URI до cyrillic'а, поэтому в ключах map'а — кириллица в UTF-8. +# 301-редиректы со старых URL-encoded WP-cyrillic slugs на новые транслитерированные. +# nginx URL-декодирует $request_uri до cyrillic, поэтому в ключах map'а — кириллица в UTF-8. map $request_uri $legacy_redirect { default ""; ~^/добро-пожаловать/?$ /dobro-pozhalovat/; ~^/фото/?$ /foto/; ~^/сегодня-ночью-россияне-увидят-первое-суперлуние-года-волчью-луну/?$ /segodnya-nochyu-rossiyane-uvidyat-pervoe/; ~^/первые-20-градусные-морозы/?$ /pervye-20-gradusnye-morozy/; + # WP feed → новый Astro feed + ~^/feed/?$ /feed.xml; + ~^/feed/rss2/?$ /feed.xml; + ~^/\?feed=rss2$ /feed.xml; } server { @@ -59,39 +63,18 @@ server { client_max_body_size 4M; - # 301-редиректы с легаси WP-slugs на новые транслитерированные пути + # 301-редиректы с легаси WP-URL if ($legacy_redirect != "") { return 301 $legacy_redirect; } - # WP-эндпоинты — больше не существуют, отдаём 410 Gone (помогает поисковикам пометить как удалённые) - location ~* ^/(wp-admin|wp-login\.php|wp-content|wp-includes|xmlrpc\.php|wp-cron\.php|wp-config\.php|readme\.html)$ { + # WP-эндпоинты больше не существуют — 410 Gone (поисковики помечают как удалённые) + location ~* ^/(wp-admin|wp-login\.php|wp-content|wp-includes|xmlrpc\.php|wp-cron\.php|wp-config\.php|readme\.html) { return 410; } - # RSS-фид (статичный файл, отдаётся из dist) - location = /feed/ { - proxy_pass http://127.0.0.1:4146; - include /etc/nginx/templates/proxy.conf; - add_header Content-Type "application/rss+xml; charset=utf-8" always; - add_header Cache-Control "public, max-age=600" always; - } - - # Агрегатор новостей: апдейтится по cron, кешируем коротко - location = /api/news.json { - proxy_pass http://127.0.0.1:4146; - include /etc/nginx/templates/proxy.conf; - add_header Cache-Control "public, max-age=120" always; - } - - # Картинки/статические ассеты — кешируем подольше - location ~* ^/(uploads|assets)/ { - proxy_pass http://127.0.0.1:4146; - include /etc/nginx/templates/proxy.conf; - add_header Cache-Control "public, max-age=604800, immutable" always; - proxy_cache_valid 200 7d; - } - + # Всё остальное — на контейнер v2. Astro nginx внутри сам разруливает кэши, + # MIME для RSS, /api/news.json из bind-mount и т.д. location / { proxy_pass http://127.0.0.1:4146; include /etc/nginx/templates/proxy.conf;