Рейтинг:0

Почему мой файл конфигурации nginx перенаправляет поддомены на основной домен?

флаг cn

Я удалил все файлы из /etc/nginx/сайты с поддержкой/ каталог.

Я также удалил все файлы из /etc/nginx/доступные сайты/ каталог.

у меня только один файл /etc/nginx/conf.d/ называется мое доменное имя.com.conf и он содержит:

сервер {
    слушать 80;
    имя_сервера имя-моего-домена.com www.имя-моего-домена.com;
    вернуть 301 https://$server_name$request_uri;
}

сервер {
    слушать 443 ssl;
    имя_сервера имя-моего-домена.com www.имя-моего-домена.com;

    ssl_certificate /etc/letsencrypt/live/my-domain-name.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my-domain-name.com/privkey.pem;

    включить /etc/letsencrypt/options-ssl-nginx.conf;

    место расположения / {
        proxy_pass http://localhost:4000;
    }
}

Я проксирую трафик в док-контейнер, который прослушивает порт 4000.

Он отлично работает для мое доменное имя.com и www.мое-домен-имя.com.

Однако он также перенаправляет ВСЕ моих поддоменов, которые были определены в DNS.

Это не предполагаемое поведение. Я хочу, чтобы этот файл обслуживал только эти два домена, а не больше.

Что здесь не так?

Обновлять:

Я добавил еще один файл, названный sudomain.my-domain-name.com.conf и я добавил в него эту конфигурацию:

сервер {
    слушать 80;
    server_name subdomain.my-domain-name.com;
    вернуть 301 https://$server_name$request_uri;
}

сервер {
    слушать 443 ssl;
    server_name subdomain.my-domain-name.com;

    ssl_certificate /etc/letsencrypt/live/my-domain-name.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my-domain-name.com/privkey.pem;

    включить /etc/letsencrypt/options-ssl-nginx.conf;

    место расположения / {
        proxy_pass http://localhost:3131;
    }
}

И нгинкс -т демонстрирует успех и nginx -s перезагрузить также применяется. Но опять же, когда я иду в subdomain.my-domain-name.com, вместо того, чтобы получить второй докер, работающий на порту 3131, я снова перенаправляюсь на мое доменное имя.com страница.

Рейтинг:1
флаг pl

Пожалуйста, покажите конфигурацию nginx ваших субдоменов.

РЕДАКТИРОВАТЬ 1:

Попробуйте добавить этот файл конфигурации (назовите его как хотите):

сервер {
    слушать 80;
    имя_сервера имя-моего-субдомена.имя-моего-домена.com www.имя-моего-субдомена.имя-моего-домена.com;
    вернуть 301 https://$server_name$request_uri;
}

сервер {
    слушать 443 ssl;
    
    имя_сервера имя-моего-субдомена.имя-моего-домена.com www.имя-моего-субдомена.имя-моего-домена.com;

    ssl_certificate /etc/letsencrypt/live/my-subdomain-name.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/my-subdomain-name.com/privkey.pem;

    включить /etc/letsencrypt/options-ssl-nginx.conf;

    место расположения / {
# Вы можете изменить порт, URL, если хотите
        proxy_pass http://localhost:4000;
    }
}

РЕДАКТИРОВАТЬ 2:

Например, у вас есть этот поддомен: test.my-domain.com Затем вам нужно настроить свой сервер для обслуживания файлов из этого субдомена. Для этого нам нужно создать конфигурационный файл nginx.

Saeed Neamati avatar
флаг cn
Нет файла конфигурации для поддоменов. Они определены только в моем DNS, который является CloudFlare.
Saeed Neamati avatar
флаг cn
Этот файл конфигурации — мой единственный файл конфигурации в каталоге `/etc/nginx/conf.d/`.
флаг pl
Вы должны создать файл конфигурации для каждого домена и поддомена.
Saeed Neamati avatar
флаг cn
Уважаемый @ArRakin, спасибо за ответ.Но я не понимаю, как это мне помогает.
Saeed Neamati avatar
флаг cn
При всем уважении, я думаю, что вы неправильно поняли мою проблему.
флаг pl
Я сейчас редактирую этот пост.
Saeed Neamati avatar
флаг cn
Допустим, у меня есть только мои поддомены в моем DNS, и я не забочусь о том, чтобы обслуживать что-либо от них. Почему Nginx ведет себя так с этим единственным файлом? Почему он перенаправляет **ВЕСЬ** трафик на мой основной домен, в то время как ему прямо указано обслуживать только мой основной домен?
Michael Hampton avatar
флаг cz
@SaeedNeamati Вы отправили трафик на nginx, поэтому он должен что-то с ним сделать. В случае, если вы не указали блок сервера для использования, он будет использовать значение по умолчанию.
Saeed Neamati avatar
флаг cn
эта логика абсурдна. Вы можете показать мне, где **по умолчанию**? моя конфигурация является явной, и в ней нет значений по умолчанию.
Saeed Neamati avatar
флаг cn
Пожалуйста, смотрите обновление.
djdomi avatar
флаг za
покажите нам полный вывод `nginx -T`
Рейтинг:0
флаг sz

Однако он также перенаправляет ВСЕ мои поддомены, которые были определены в ДНС. [...] Это не предполагаемое поведение. мне нужен только этот файл обслуживать эти два домена, не более.

Если поддомен разрешается в тот же IP-адрес, что и сервер, на котором размещены два домена, которые вы действительно хотите обслуживать, Nginx будет вынужден обрабатывать эти входящие запросы.

Почему он перенаправляет ВЕСЬ трафик на мой основной домен, в то время как это явно мне сказали обслуживать только мой основной домен?

Это поведение по умолчанию. Nginx пытается направить запросы на соответствующий сервер, используя Хозяин Заголовок HTTP, но если совпадений нет, он направляет трафик на сервер по умолчанию. Кажется, это и есть источник путаницы.

Если поле заголовка Host не соответствует имени сервера, NGINX Plus направляет запрос на сервер по умолчанию для порта, на котором пришел запрос. Сервер по умолчанию — первый в списке nginx.conf, если только вы не включили параметр default_server в директива listen для явного указания сервера по умолчанию1.

Чтобы на самом деле запретить серверу обслуживать контент вашего домена, если это специально не запрошено, вы можете добавить фактический блок сервера по умолчанию. Вы даже можете вернуть 204 No Content для всех запросов, если хотите, хотя что-то даже немного более тонкое, вероятно, всегда предпочтительнее.

Ответить или комментировать

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