From 5dddb688031f266c68a3b68ba24a7f138acd6a43 Mon Sep 17 00:00:00 2001 From: striker Date: Thu, 21 May 2026 03:24:12 +0300 Subject: [PATCH] =?UTF-8?q?nginx:=20vhost=20=D0=B4=D0=BB=D1=8F=20Astro-?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D0=B5=D0=B9=D0=BD=D0=B5=D1=80=D0=B0=20?= =?UTF-8?q?(proxy=20=D0=BD=D0=B0=20:4146,=20301-=D0=BA=D0=B0=D1=80=D1=82?= =?UTF-8?q?=D0=B0=20WP-cyrillic=20slugs=20+=20=D1=81=D1=82=D0=B0=D1=80?= =?UTF-8?q?=D1=8B=D0=B9=20/feed/=20=E2=86=92=20/feed.xml)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nginx/pushkinohistory.ru.conf | 45 +++++++++++------------------------ 1 file changed, 14 insertions(+), 31 deletions(-) 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;