Остановка веб-сайта IIS по умолчанию вызывает ошибку Azure шлюза приложений «502 Bad Gateway» для ВСЕХ веб-сайтов в IIS - PullRequest
0 голосов
/ 10 июля 2020

У меня проблема с размещением нескольких. NET веб-сайтов на Windows сервере / IIS и Azure шлюзе приложений.

Мы размещаем несколько сайтов на одном Azure Windows ВМ под управлением IIS, сидящая за Azure шлюзом приложений WAFv2. Виртуальная машина подключается к шлюзу приложений с помощью внутреннего пула, настроенного для указания на частный IP-адрес виртуальной машины, при этом пиринг виртуальных сетей настроен между шлюзом приложений и виртуальными сетями виртуальных машин.

Когда я останавливаю веб-сайт по умолчанию в IIS, ВСЕ веб-сайты затем возвращают ошибку «502 Bad Gateway» из Azure Application Gateway, и состояние работоспособности серверной части изменяется на «Unhealthy» для внутреннего пула, в котором находится виртуальная машина.

Может кто-нибудь скажет мне, почему остановка сайта по умолчанию приведет к ошибке шлюза приложений для всех сайтов?

EDIT: Снимок экрана привязок IIS по запросу

EDIT 2: Очевидно, я могу Я не отвечаю на свой вопрос, однако, поработав над этим с нашим CSP, у меня есть ответ. По умолчанию проверка работоспособности серверной части шлюза приложений смотрит на сайт IIS по умолчанию. Если вы остановите это, проверка работоспособности серверной части завершится ошибкой и перейдет в состояние "Неработоспособное". На этом этапе шлюз APP больше не будет даже ПЫТАТЬСЯ на маршрутизацию любых запросов, независимо от URL-адреса, к этому внутреннему пулу.

Ответы [ 2 ]

0 голосов
/ 23 июля 2020

Если бы я попытался устранить это, я бы, вероятно, начал с совершенно нового «тестового» экземпляра IIS и настроил обратный прокси-сервер на порту 80, единственная задача которого - прослушивать входящие запросы к порту 80. Эти запросы затем будет перенаправлен вашим обратным прокси-сервером на ваши фактические веб-сайты, привязанные к разным портам (например, 81, 82, 83, и т. д. c).

Идея состоит в том, чтобы все ваши веб-сайты работали на разных портах таким образом, когда вы останавливаете один из своих сайтов, остальные продолжают работать без проблем.

Учитывая вашу настройку с размещением до 40 сайтов в одном экземпляре IIS, я бы попытался устранить неполадки этого типа только с новый «тестовый» экземпляр IIS.

  1. Создайте новый «тестовый» экземпляр IIS.
  2. Создайте обратный прокси. Для этого создайте новый сайт и назовите его (например, rev-proxy) и дайте ему привязку к порту 80.
  3. Разверните один реальный сайт (например, myfirstsite). Дайте ему привязку к порту, отличную от 80 (например, 81).
  4. Дважды щелкните свой сайт rev-proxy и добавьте URL Rewrite -> Inbound Rules -> Пустое правило. См. Прикрепленное изображение. Добавьте правило, чтобы, когда пользователь запрашивает «myfirstsite», этот запрос пересылается на порт 81. Используйте кнопку «Тестовый шаблон», чтобы проверить свой шаблон. Изображение является всего лишь предложением, и ваш шаблон должен соответствовать URL-адресу, который пользователи используют для запроса вашего сайта, а не обязательно имени, которое вы даете своему сайту в IIS.

Пример обратный прокси с перезаписью URL

0 голосов
/ 10 июля 2020

Если на шлюзе приложений нет виртуальных машин или масштабируемого набора виртуальных машин, настроенных в пуле внутренних адресов, он не может маршрутизировать запросы клиентов и отправляет ошибку неверного шлюза. Следуя приведенной ниже команде, вы увидите результат пула внутренних адресов JSON.

Get-AzApplicationGateway -Name "SampleGateway" -ResourceGroupName "ExampleResourceGroup"

Вот официальное руководство по устранению ошибки 502. https://docs.microsoft.com/en-us/azure/application-gateway/application-gateway-troubleshooting-502#overview Кроме того, вот простое средство устранения неполадок. https://support.microsoft.com/en-us/help/4504111/azure-application-gateway-with-bad-gateway-502-errors

...