Назад | Перейти на главную страницу

Настройте CNAME для проблемы с субдоменом

Я бы настроил на это:

На сервере example_org2.org я использую nginx и у меня есть 3 проекта django.

test.example_org2.org показывает третий проект django. http://example_org2.org показывает первый проект django.

Проблема в том, что я установил CNAME на example_org1.org для указания test.example_org1.org на test.example_org2.org, но если я попытаюсь перейти на http://test.example_org1.org Я вижу первый проект django, который настроен для основного домена, а не для субдомена. В противном случае, если я перейду прямо к http://test.example_org2.org все работает и я вижу свой правильный проект.

Почему эта проблема?

как насчет добавления test.example_org2.org к server_name вместе с test.example_org1.org

server {
   server_name test.example_org1.org test.example_org2.org;

...
}

CNAME есть только сказать sub1.domain имеет тот же IP, что и sub2.domain. Но это не говорит веб-серверу, что они должны обслуживать один и тот же контент.

Когда вы вводите доменное имя в браузере, он проверяет IP через DNS запрос, и он получает ответ, говорящий это CNAME для test.example_org2.org, который указывает на IP 1.2.3.4. Затем браузер подключается к этому IP-адресу и отправляет Host заголовок со значением test.example_org1.org (потому что это то, что вы просили). Ngnix получает это, и, поскольку он ничего об этом не знает (нет в его конфигурации), он обслуживает первый виртуальный хост, который у него есть.

Вы можете сказать виртуальному хосту по умолчанию, что если кто-то попросит test.example_org1.org тогда он должен быть перенаправлен на test.example_org2.org (непроверено):

if ($host ~* "^test.example_org1.org$"){
  rewrite ^(.*)$ http://test.example_org2.org permanent;
  break;
}