Întrebare
Care este modalitatea corectă de a configura un Azure Application Gateway pentru a putea gestiona cererile care utilizează un antet gazdă doar cu un nume de gazdă (adică nu un nume de domeniu complet calificat) din cauza clienților care se bazează pe lista lor de sufixe de căutare DNS pentru a gestiona acest lucru.
Detaliu
Avem un Azure Application Gateway care este configurat cu un IP privat pentru a acționa ca echilibrator de încărcare pentru o varietate de site-uri web / aplicații web interne.
Deoarece gestionăm mai multe site-uri pe această poartă de aplicație, am configurat ascultători pe mai multe site-uri, care se bazează pe Antetul gazdă HTTP/1.1 pentru a direcționa corect cererile către backend-ul relevant.
Multe dintre aceste site-uri au FQDN-uri care se află pe sufixul nostru de domeniu principal; de exemplu. raportare.domeniu.example.com
. Deoarece domeniul nostru principal se află în lista de sufixe de căutare a dispozitivului nostru client, aceasta înseamnă că, în mod normal, ar putea să tasteze raportare
și cereți DNS să rezolve acest lucru raportare.domeniu.example.com
, ducându-le la locul potrivit. Cu toate acestea, browserul nu trimite FQDN-ul rezolvat DNS, ci trimite utilizatorului numele de gazdă introdus în valoarea antetului gazdei. Aceasta înseamnă că ascultătorul meu nu va primi numele complet pe care îl așteaptă.
Pot rezolva asta; crearea unui ascultător configurat cu numele de gazdă fără sufixul DNS pentru a captura cererile care ajung în acest fel; și pot chiar să mă ocup de HTTPS, deoarece avem propria noastră autoritate de certificare de încredere (adică AD Certificate Services), așa că pot emite certificate care includ atât FQDN, cât și formularul de nume scurt în lista lor SAN.
Totuși, am găsit o ciudățenie după ce am creat câteva site-uri... cu ascultători configurați ca mai jos:
- ascultător
exemplu1.domeniu.exemplu.com
-> redirecționează către un site extern
- ascultător
exemplu1
-> redirecționează către ascultător exemplu1.domeniu.exemplu.com
- ascultător
exemplu1-test.domeniu.example.com
-> se află deasupra unui bazin de backend
Am constatat că cererile făcute către https://example1-test.domain.example.com
au fost redirecționate către site-ul extern configurat pe ascultător exemplu1.domeniu.exemplu.com
.
Am testat cu Instrumentele pentru dezvoltatori Chrome Reţea
> Dezactivați memoria cache
opțiunea a fost verificată pentru a mă asigura că nu am fost afectat de 301-urile stocate în cache, am verificat de două ori configurația gateway-ului aplicației pentru a mă asigura că nu am mapat ascultătorul la regula greșită de rutare a cererii sau nu am configurat incorect regulile și am șters și recreat ascultătorii și regulile în cazul în care ceva s-ar fi deteriorat; dar fără bucurie.
Când am schimbat numele de gazdă al exemplu1
ascultător XXXexemplu1
am gasit asta exemplu1-test.domeniu.example.com
a început să lucreze conform așteptărilor.
Nu am găsit nicio documentație despre această configurare, așa că nu știu dacă este o eroare, dacă ceea ce încerc nu este acceptat, dacă ascultătorul nu folosește un șir, ci o formă de potrivire a modelelor/echivalent regex sau dacă există o altă modalitate oficială de a gestiona acest scenariu în loc de metoda pe care am „descoperit-o”.