Время от времени получение кода ответа 421 от передней дверцы Azure при использовании маршрута с подстановочными знаками

Мы используем Azure Front Door для обслуживания нашего статического веб-сайта с белой меткой, а это означает, что нам нужно, чтобы наши клиенты могли получить к нему доступ через уникальные поддомены (например, cust1.domain.com и cust2.domain.com).

Мы CNAME *.domain.com для нашего экземпляра Front Door через DNS, сопоставляем маршрут для *.domain.com и привязываем его к пользовательскому подстановочному сертификату *.domain.com (неуправляемому, который не поддерживается). Маршрут указывает на группу источников, которая, в свою очередь, указывает на источник «Хранилище (статический веб-сайт)», аналогичный prod-storage.z14.web.core.windows.net.

Иногда в Safari мы получаем ответ, который выглядит так:

<h2>Our services aren't available right now</h2><p>We're working to restore all services as soon as possible. Please check back soon.</p>0a1LIYwAAAADIYjiE3LgzTLfw86bqHEd5Q0hHRURHRTE2MTAAYTk0OGVmNjEtMTk3NS00ZjA0LTkwMjgtOTgwY2I4YzllYzFl

При просмотре вкладки сети мы видим, что ответ на самом деле является 421 Misdirected Request. Я предполагаю, что это связано с этим обновлением: https://learn.microsoft.com/en-us/azure/frontdoor/front-door-faq#how-does-front-door-handle--domain -лицо--поведение--

Как правильно настроить этот поток, чтобы избежать этой новой проблемы от Front Door? Наш случай несколько уникален и, насколько я могу судить, не задокументирован.

Я видел решения, включающие отключение HTTP/2, создание отдельного сертификата для каждого домена и использование разных IP-адресов — ни одно из них не является эффективным и не будет масштабироваться с нашим решением, потому что нам нужно создавать новые субдомены на лету без ограничений (т. е. программно добавить их в AFD нереально).

В итоге я решил эту проблему, связавшись со службой поддержки Microsoft и попросив их отключить блокировку домена, что, по-видимому, полностью решило проблему в Safari на основе нашего последующего тестирования. Надеялся на лучшее решение, но пока это работает для нас.

brandon-barnett 19.01.2023 20:53

У меня была точно такая же проблема с использованием App Services в качестве серверной части. Служба поддержки якобы сегодня отключит мне блокировку. Я принципиально не понимаю основной причины этой проблемы, поскольку запрос браузера должен содержать только один домен. Я не уверен, какой другой он будет использовать.

Brian Vallelunga 03.02.2023 04:27
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
2
149
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Интересно, что AFD — это обратный прокси, а RFC 7540 9.1.2. прокси-серверы НЕ ДОЛЖНЫ генерировать этот ответ. MS с ноября запретила выделение домена и предположительно предупредила, кажется, в апреле прошлого года, чтобы пользователи отошли от него.

Из другого исследования видно, что причина, по которой Safari не обрабатывает это правильно, заключается в том, что в том же разделе RFC, на который ссылались выше, говорится, что клиент «МОЖЕТ попробовать запрос — независимо от того, является ли метод запроса идемпотентным или нет — через другое соединение». Похоже, что Safari не повторяет это соединение TLS с правильным SNI, тогда как другие браузеры будут.

Что мне любопытно, так это то, как это выглядит в трассировке. Для других ваших браузеров, которые работают, инструменты разработчика показывают, что этот 421 возвращается, после чего следует немедленная попытка снова получить ресурс?

https://www.rfc-editor.org/rfc/rfc7540#section-9.1.2

Ответ принят как подходящий

В итоге я решил эту проблему, связавшись со службой поддержки Microsoft и попросив их отключить блокировку домена, что, по-видимому, полностью решило проблему в Safari на основе нашего последующего тестирования. Надеялся на лучшее решение, но пока это работает для нас.

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

DusDee 20.01.2023 08:04

Azure отключил блокировку домена для наших сервисов, и теперь все в порядке. Однако они сказали, что снова включат его 8 ноября 2023 года, поэтому нам нужно выяснить основную причину до этого. Похоже, в основном это происходит с нашими клиентами на iPhone.

Brian Vallelunga 03.02.2023 13:25

В дальнейшем проблема была вызвана тем, что мы загрузили скрипт с cdn.ourdomain.com, но затем отправили сообщение на tenant.ourdomain.com, используя один и тот же подстановочный сертификат в одном и том же экземпляре Front Door. Насколько я понимаю, соединение HTTP2 повторно используется в POST, поэтому имя SNI cdn.ourdomain.com и HTTP-запрос tenant.ourdomain.com не совпадают. Это то, что Front Door обнаруживала и блокировала.

Brian Vallelunga 03.02.2023 18:13

Другие вопросы по теме