Проблема с именем_сервера Nginx на HTTPS для нескольких приложений (vhosts)

Проблема с именем_сервера Nginx на HTTPS для нескольких приложений (vhosts)

У меня на сервере есть два приложения, которые работали отлично, пока я не решил перевести их на HTTPS.

Конфигурация Nginx для приложения 1:

server_name abc.com my.abc.com static.abc.com

Настройка приложения 2:

server_name _;

До включения SSL оба приложения работали, например

Приложение1http://static.abc.com/some-assets.png

Приложение2http://static.def.com/some-assets.png

После включения SSL

Приложение1https://static.abc.com/some-assets.png

Приложение2https://static.def.com/some-assets.png

Если я сейчас попытаюсь получить доступ к App2, https://static.def.com/some-assets.pngон также каким-то образом укажет на App 1.

Я попытался разобраться и обнаружил, что если заменить server_name _;на server_name static.def.com;в конфигурации Nginx App 2, то все начинает работать.

У меня вопрос, требуется ли Nginx явно определять домены, если вы хотите обслуживать их по HTTPS? Или это что-то с SSL-рукопожатием, которое не работает и т. д. и это заканчивается так?

Обновлять:

Файлы конфигурации Nginx:

abc.conf

def.conf

решение1

Как сказал Йоханнес, я думаю, у вас неправильное представление о том, что _означает a server_name: абсолютно ничего. Большинство руководств включают его в свой сервер-сборник по умолчанию, чтобы быть уверенными, что он не мешает ни одному именованному виртуальному серверу.

Что вы, должно быть, упустили из того, что читаете (или, может быть, люди, которые написали то, что вы читаете, упустили это), так это то, что правильный сервер по умолчанию на самом деле включает эту default_serverопцию как часть listenдирективы. Прочитайте nginx.org/r/listen для получения дополнительной информации.

решение2

Это может зависеть от порядка определений вашего сервера. _не является специальным именем, это просто недопустимый домен, и поэтому он никогда не будет соответствовать. Это делает его таким же, как имена серверов в другом определении сервера для хоста, например static.def.com: Оба не совпадают. Если совпадений нет вообще, nginx просто возьмет первое определение сервера.

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