Nginx перенаправляет все поддомены на URL-адрес, не являющийся поддоменом

Nginx перенаправляет все поддомены на URL-адрес, не являющийся поддоменом

В настоящее время я столкнулся со следующей проблемой и, черт возьми, не могу ее решить. > 20 похожих тем, которые я нашел в Google, не помогают.

Прежде всего я создал простое перенаправление с HTTP на HTTPS, которое выглядит так:

server {
    listen 80;
    server_name my-domain.com;
    return 301 https://my-domain.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name my-domain.com;
    ...
}

И это работает отлично. Если я попробую открытьмой-домен.com, я буду перенаправлен наhttps:// мой-домен.com. Но проблема с поддоменами все еще есть. Если я открываюwww.my-domain.comилиtest.my-domain.com, я бы хотел, чтобы эти поддомены перенаправлялись на мой кореньHTTPSдомен: https:// my-domain.com. Без каких-либо поддоменов перед ним. То же самое должно быть и для поддоменов HTTPS. Я буквально хочу запретить любые поддомены (пока).

Я перепробовал много конфигураций, например, добавление*.мой-домен.comна server_name, и все равно это не работает так, как ожидалось. Я также пытался создать HTTPS-перенаправление с *.my-domain.com на мой обычный HTTPS-домен, и все равно у меня похожий результат с каждой конфигурацией:

  1. Все HTTP-запросы приводят к созданию HTTPS-URL, содержащего поддомен.
  2. Все HTTPS-запросы никогда не приводят к созданию HTTPS-URL БЕЗ поддомена.

Теперь мой вопрос: как перенаправить каждый поддомен (http и https) на определенный https URL, не содержащий в себе НИКАКОГО поддомена? Каждая комбинация всегда должна приводить к:https:// мой-домен.com$request_uri

заранее спасибо

Обновлять:

Не решило мою проблему полностью, но у меня есть кое-что, с чем я могу жить. Я создал CNAME с www.my-domain.com на my-domain.com в конфигурации моего домена. Я также изменил nginx и добавил новую конфигурацию сервера, которая перенаправляет с 443 www.my-domain на https:// my-domain. У меня также есть обычный сервер с портом 80, который также перенаправляет с www.my-domain на https:// my-domain. Я изменил свой сертификат и добавил www.my-domain в список доменов и поддоменов. Теперь каждый запрос на www.my-domain (http или https) будет перенаправляться наhttps://мой-домен. Также мой-домен(http и без www.) будет перенаправлять наhttps://мой-доментоже. Это кажется "нормальным" для моих нужд.

решение1

Вы можете использовать default_serverблок для сопоставления любых httpи httpsдоменов, явно не определенных в другом serverблоке. Эта httpsчасть работает правильно только с wild-card сертификатами.

server {
    listen 80 default_server;
    listen 443 ssl default_server;
    ... ssl configuration
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    ...
}

Видетьэтот документдля получения подробной информации.

Связанный контент