Я бы настроил на это:
На сервере 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;
}