nginx + apache, редирект с несуществующего поддомена на конкретный поддомен

Работает nginx + apache. Один поддомен был ликвидирован и его статьи переехали на те же адреса, но нового поддомена.

В .conf старого поддомена я прописал следующие настройки, они работают нормально.

server 
{
    listen 80;
    root /var/www/old.site.ru;  
    server_name old.site.ru www.old.site.ru; 
    return 301 https://new.site.ru$request_uri;
}

server 
{
    listen 443;

    ssl on;
    ssl_certificate /etc/ssl/wildcard.crt; 
    ssl_certificate_key /etc/ssl/wildcard.key;

    server_name old.site.ru www.old.site.ru;

    return 301 https://new.site.ru$request_uri; 
}

Сейчас планируется упразднить еще несколько поддоменов с переносом их статей на новые, в связи с чем возникла идея удалить ненужные поддомены, чтобы просто ради редиректа не складировать старье - пусть где то в общем конфиге будет редирект с конкретных (но уже несуществующих) поддоменов на конкретные новые. А вот это у меня не получилось.

Я полез в nginx.conf - что то никак не заводится.

Что мне необходимо предпринять? Спасибо!


Ответы (1 шт):

Автор решения: Aleksey Vaganov
  1. Добавьте в ваш конфиг маппинг старых и новых доменов:
map $host $new_host {
    hostnames;
    old.site.ru new.site.ru;
    site2.ru new2.site.ru
    ...
}
  1. В блоке server перечисляйте все свои старые домены (поддомены) в директиве server_name.

  2. В директиве return используйте переменную $new_host:

return 301 https://$new_host$request_uri; 
  1. Обратите внимание на SSL сертификат. Либо на все перечисленные домены должны быть один сертификат, либо имена файлов ключей и сертификатов нужно увязать с переменной $host.
→ Ссылка