nginx: vhost для Astro-контейнера (proxy на :4146, 301-карта WP-cyrillic slugs + старый /feed/ → /feed.xml)
Some checks failed
deploy / deploy (push) Failing after 8s
Some checks failed
deploy / deploy (push) Failing after 8s
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user