1

Я в настоящее время выпускаю следующую проблему и, черт возьми, я не могу решить ее. > 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;
    ...
}

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

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

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

Теперь мой вопрос: Как я могу перенаправить каждый субдомен (http и https) на определенный URL-адрес https, в котором нет субдомена? Каждая комбинация всегда должна приводить к: https:// my-domain.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:// my-domain. Также my-domain(http и без www.) Будет также перенаправлять на https:// my-domain. Это кажется "хорошо" для моих нужд.

1 ответ1

0

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

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

server {
    listen 443 ssl http2;
    ...
}

Смотрите этот документ для деталей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .