TL; DR ... наша политика домена молча принудительно подтолкнула настройки локальной сети (включая ссылку на прокси) на мою машину с заранее определенным интервалом, который случился, когда я разрабатывался, но после того, как я вручную отключил прокси. Поскольку я точно знал, что отключил его для локальных адресов, мне не приходило в голову, что это будет корнем моей проблемы.
На одной из моих машин разработки под управлением Windows Server 2012 R2 я работаю испытывают любопытное поведение при локальном разрешении хоста через файл hosts.
[ Описание для воспроизведения ]
C:\Windows\system32>ping baz.inga
Ping request could not find host baz.inga. Please check the name and try again.
C:\Windows\system32>_
127.0.0.1 baz.inga
::1 baz.inga
C:\Windows\system32>ping baz.inga
Pinging baz.inga [127.0.0.1] with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\Windows\system32>_
... Затем я размещаю приложение на локальном хосте: 7890
/ GET http: //baz.inga: 7890
Есть ли какое-нибудь разумное объяснение, почему это не разрешается локально? Я протестировал ту же процедуру на машине под управлением Windows 7, и ответ на HTTP-прокси - это ресурс с локальным разрешением.
WTH?!?!
Наша групповая политика диктует, что настройки LAN для домена автоматически выталкиваются на все подключенные к нему машины на таймере.
Хотя я отключил скрипт прокси во время настройки разрешения моего локального хоста, когда таймер работал, ссылка на скрипт прокси беззвучно проталкивалась по локальной сети и ввела мою ошибку. Так как я уже отключил http прокси вручную, мне не пришло в голову, что это будет корнем моей проблемы и что это "должно" быть что-то более сложное.
Вместо создания новой "привилегированной" политики домена, которая не имеет этих строгих настроек, наше решение заключается в определении соглашения, где хостам, предназначенным для разрешения на локальной машине, будет даваться "зарезервированный" конечный сегмент полномочий, который затем будет автоматически разрешаться через прокси как DIRECT ссылка, изменяя прокси. pac-файл, выталкиваемый из DC с помощью
if(dnsDomainIs(host, ".reserved")) { return "DIRECT"; }
HTTP 503 - это ответ об ошибке вашего приложения, а не об ошибке DNS поиска; если бы запрос не смог дойти до вашего приложения из-за того, что не разрешил его имя хоста, оно бы не получило ответа 503.
Похоже, ваше разрешение имени в порядке (как и ожидалось, и как подтверждается ping
работает); вместо этого ваше приложение не работает.