Вначале я создал файл конфигурации, который работает правильно, когда я хочу получить доступ к http://www.domain.com
:
server {
listen 80;
listen [::]:80;
root /var/www/domain;
index index.html
server_name domain.com www.domain.com;
}
Затем я решаю создать еще один файл конфигурации для поддомена:
server {
listen 80;
listen [::]:80;
root /var/www/subdomain.domain;
index index.html
server_name subdomain.domain.com;
}
Теперь проблема в том, что всякий раз, когда я хочу получить доступ к http://www.domain.com
или http://subdomain.domain.com
, в обоих случаях результатом является страница, которую я должен получить для поддомена.
Новый файл конфигурации корректно добавлен в site-enabled
папку:
ln -s /etc/nginx/site-available/subdomain.domain.conf /etc/nginx/site-enabled/subdomain.domain.conf
А вот так выглядят мои записи DNS:
domain.com. IN A <server_ip>
www.domain.com. IN A <server_ip>
subdomain.domain.com. IN A <server_ip>
решение1
Вы пропустили ;
директиву index
, которая заставляет nginx интерпретировать
index.html
server_name domain.com www.domain.com;
как содержимое index
директивы. Следовательно, виртуальный хост не определен с помощью server_name
, и nginx будет использовать виртуальный хост поддомена в качестве виртуального хоста catch-all.