Наш веб-сайт размещен на внешнем сервере, вне нашей сети. Канонический URL - это намеренно отсутствует www, и 301 перенаправит любые запросы, содержащие www, на канонический URL. Все идет нормально.
Проблема заключается в предоставлении доступа к сайту из нашей локальной сети. Теоретически ответ прост: добавьте запись хоста в DNS, указывающую foobarco.org на внешний веб-хост. (например, foobarco.org -> 203.0.113.7)
Однако наш домен активного каталога совпадает с нашим общедоступным веб-сайтом (foobarco.org), а AD периодически автоматически создает записи хоста (A) в корне домена, соответствующем нашим контроллерам домена. Это вызывает очевидные проблемы: пользователи в локальной сети, пытающиеся получить доступ к веб-сайту, вместо этого разрешают контроллеры домена.
В качестве временной меры мы переопределяем DNS, используя файл hosts на клиентах, но это быстрый взлом, который плохо масштабируется.
Взлом hosts-файла не привел к нарушению ничего очевидного, поэтому я сомневаюсь, что такое поведение важно для операций AD, но я не нашел способа его отключить.
Можно ли изменить это поведение?
Любое решение, предполагающее использование файла «hosts», не является решением. Вдвойне так, в этом случае, потому что это сломает DFS домена. Очень вероятно, что ваши групповые политики не применяются должным образом на компьютерах, на которых вы сделали этот «взлом». Проверьте один из их журналов событий приложений. Если вы когда-нибудь надеетесь использовать корни DFS домена, это также исключит эту возможность. Это ненадежная стратегия. (Если для вас не «очевидно», что он «сломал» что-либо, скорее всего, вы не используете групповую политику или доменную DFS в какой-либо степени.)
Эта "проблема" была источником некоторых энергичный и живой религиозный-звук дебаты о сбое сервера.
Я бы сказал, что кто-то против Рекомендации, рекомендованные Microsoft, неправильно назвал ваш домен Active Directory. Домен Active Directory должен называться либо:
Ваш домен AD должен иметь глобально уникальное, не однозначное (например, «есть хотя бы одна точка в нем») имя, которое вы контролируете и которое не назначено никаким ресурсам, доступным в Интернете.
TLD ".local" - плохая идея, поскольку может вызвать проблемы с протоколом ZeroConf. Не используйте это.
Вы можете совершить глупый взлом, который я видел в некоторых безнадежных ситуациях, когда вы запускаете IIS на каждом компьютере контроллера домена, отправляя перенаправления на http://www.domain.com
имя, когда клиенты запрашивают http://domain.com
. Это ужасно, но он сделает то, что вы хотите.
Если у вас есть такая возможность, я бы подумал о переименовании домена Active Directory. Это звучит резко, но в будущем избавит от этой головной боли.