Xi ħadd jindirizza host HAProxy pubbliku lejn applikazzjoni interna u jistaqsi għaliex il-browser ma jistax isegwi. Il-proxy jasal għall-app permezz tal-VPN tiegħu, ir-ridirezzjoni tirritorna header Location, u l-browser imbagħad jipprova indirizz li jeżisti biss ġewwa t-tunnel. Minn barra l-paġna sempliċement tistalla. Id-deċiżjoni hija liema naħa tiftaħ it-tieni konnessjoni, u dan huwa li jifred ridirezzjoni minn backend.

Żewġ toroq li jidhru simili fil-konfigurazzjoni

Ridirezzjoni ttemm l-iskambju b'risposta. Il-klijent jaqra Location u jibda talba ġdida minn fejn ikun, jiġifieri min-network li qatt ma kkontrollajt. Il-proxy m'għadux involut. Kull ma jiġi wara jiddependi mid-DNS, mit-triq u mill-fiduċja tal-klijent stess, għalhekk ir-riżultat ivarja skont fejn l-utent fetaħ il-browser:

GET /app        client -> proxy
302 Location    proxy  -> client   (http://10.40.0.20:8080/)
GET /app        client -> 10.40.0.20:8080   client network, no route

Backend tal-proxy iżomm it-tieni stadju fuq in-naħa tas-server. Il-proxy jiftħu fit-triq li diġà għandu, u l-klijent ikompli jkellem isem pubbliku wieħed. Jekk it-tunnel jaqa', il-klijent jirċievi żball minflok URL li ma jistax isegwi. Dan id-differenza hija wkoll dak li jagħmel il-ħsara dijanjostikabbli, għax l-iżball jidher fejn huma l-logs:

GET /app        client -> proxy
GET /app        proxy  -> 10.40.0.20:8080   over the VPN
response        proxy  -> client

Id-dokumentazzjoni tar-ridirezzjonijiet ta' HAProxy tiġbed eżattament din il-linja: li twieġeb lill-klijent b'ridirezzjoni hija azzjoni differenti milli tibgħat it-talba lil backend. Iż-żewġ direttivi jinsabu ftit linji 'l bogħod minn xulxin f'fajl ta' konfigurazzjoni u jġibu ruħhom b'mod kompletament differenti. Waħda ttemm it-talba, l-oħra tibda t-tieni waħda li hija tal-proxy.

X'jeħtieġ il-browser u x'ma jagħtihx il-VPN tas-server

It-talba tal-browser innifsu teħtieġ erba' affarijiet li jista' ma jkollux: tweġiba DNS għall-isem privat, rotta lejn dak l-indirizz, permess biex jasal għas-servizz li jisma', u fiduċja fiċ-ċertifikat li jippreżenta dak is-servizz. Il-host tal-proxy għandu l-erbgħa kollha permezz tat-tunnel tiegħu. Xejn minnhom ma jgħaddi għal klijent li qatt ma kien f'dak it-tunnel, għax it-tunnel hija proprjetà tal-host, mhux tal-URL.

Dan il-vojt jispjega s-sintomu kważi-jaħdem. L-ewwel talba tirnexxi, il-bar tal-indirizz jinbidel, u mbagħad il-konnessjoni tistalla jew tfalli filwaqt li l-proxy jibqa' f'saħħtu l-ħin kollu. Fil-konfigurazzjoni tal-proxy m'hemm xejn miksur, u l-aġġustament tagħha ma jgħin lil klijent li m'għandux triq lejn 10.40.0.20. Jew il-klijent jikseb rotta, jew il-proxy jrid jagħmel il-konnessjoni f'ismu.

Meta biss il-proxy jista' jasal għall-app

Neħħi l-azzjoni tar-ridirezzjoni u ibgħat dawk it-talbiet lil backend li jindika l-indirizz privat. Il-frontend iżomm ismu pubbliku filwaqt li l-backend jiddeċiedi fejn it-talba tassew tmur. Xejn fit-triq tal-klijent ma jinbidel, għax il-proxy jieqaf jiddeskrivi destinazzjoni u jibda jkun waħda. Għal applikazzjoni li b'mod intenzjonat tisma' fuq il-port intern 8080, il-blokka tas-server hija qasira:

backend private_app
    mode http
    option httpchk GET /health
    server app1 10.40.0.20:8080 check

Aqra din il-blokka bħala stqarrija dwar it-tabella tar-routing tal-proxy: 10.40.0.20 trid tkun tista' tintlaħaq mill-host tal-proxy stess, li hawn ifisser permezz tal-interface VPN u mhux permezz tar-rotta awtomatika. Il-kelma ewlenija check tirrapporta biss x'jagħmel dik ir-rotta, u t-triq tas-saħħa trid teżisti fuq l-applikazzjoni, inkella kull verifika timmarka s-server bħala mitfi. Verifika li tgħaddi ma tipprova xejn dwar il-klijent u ma tissostitwixxix il-politika li tiddeċiedi min jista' juża l-backend.

Il-framment mhuwiex frontend sħiħ. Żomm is-semmiegħa, l-awtentikazzjoni, l-għażla tal-host u tal-passaġġ permessi, u r-regola li tiddeċiedi min jista' jasal għall-applikazzjoni xejn. Qabbel ukoll il-protokoll tal-backend, għax backend HTTPS jeħtieġ verifika taċ-ċertifikat u konfigurazzjoni tal-identità tas-server, u li taqbeż dik il-verifika tibdel konnessjoni privata f'waħda mhux verifikata.

Ikkonferma t-triq lura fiż-żewġ direzzjonijiet qabel ma tħabbar rebħa. L-applikazzjoni issa tara konnessjoni mill-proxy, għalhekk il-logs tagħha u kwalunkwe metadata tal-indirizz tal-klijent jiddeskrivu l-proxy sakemm ma tħejjix mod ieħor. Iddeċiedi kif jiġu trattati l-identità u l-indirizzi mgħoddija, u ttestja d-deċiżjoni minflok ma tassumiha.

Ir-ridirezzjonijiet tal-app innifisha għadhom jindikaw 'il ġewwa

Li tibgħat l-ewwel talba quddiem hija biss nofs l-integrazzjoni. L-applikazzjoni tista' toħroġ ridirezzjonijiet assoluti, URL tal-assi kodifikati b'mod iebes, jew cookies limitati għall-isem li taf internament, u kull waħda minnhom tibgħat il-browser lura lejn indirizz li ma jistax jasal għalih. Header Location li jindika l-isem intern jidher identiku għall-problema oriġinali, u għalhekk jiġi dijanjostikat b'mod żbaljat bħala ħsara tal-proxy.

Issettja l-URL esterna dokumentata tal-applikazzjoni u l-għażliet tal-proxy tagħha, imbagħad ġib il-header Host jaqbel mal-host virtwali u mal-aspettattivi taċ-ċertifikat. Cookie limitat għall-isem intern mhux se jerġa' lura permezz tal-isem pubbliku, u l-linja tal-login li ssegwi tinqara bħala bug fl-awtentikazzjoni. Ibdel l-URL esterna l-ewwel, erġa' ttestja minn profil tal-browser nadif, u stenna li settings migrati nofshom jipproduċu login li jirnexxi u sessjoni li tmut mill-ewwel.

Afdaw il-metadata mgħoddija biss mill-proxy magħżul. Header li jista' jissettja kwalunkwe klijent qatt m'għandu jsir valur ta' awtorizzazzjoni, inkella l-proxy jsir mod kif min iċempel jitlob l-identità ta' ħadd ieħor. Dik ir-regola hija indipendenti mill-kwistjoni tar-ridirezzjoni u tgħix kull disinn mill-ġdid aktar tard.

Iddeċiedi liema disinn tassew għandek

Jekk kull utent diġà għandu aċċess VPN awtorizzat, ridirezzjoni lejn URL privat tista' tkun disinn intenzjonat. Ikkonferma dik il-ħtieġa b'mod espliċitu minflok ma tassumiha, għax iż-żewġ disinji jservu popolazzjonijiet kompletament differenti. Wieħed minnhom ma jaħdimx xejn minn network ta' lukanda, u l-ieħor jesponi l-applikazzjoni lil kull min jista' jgħabbi l-URL pubbliku. Dik id-distinzjoni tappartjeni għan-nota tad-disinn.

Mexxi l-verifika minn magna fuq in-network tal-utenti u segwi kull qabża li tagħmel il-browser, mhux biss l-ewwel risposta. Żomm għajnejk fuq il-bar tal-indirizz u fuq kull talba sussegwenti, għax URL assolut wieħed f'tikketta tal-assi biżżejjed biex tkisser fluss li l-ewwel qabża għaddiet minnu. Il-login irid jaħdem permezz tal-isem pubbliku, u r-riżorsi li għandhom jiġu miċħuda għandhom jibqgħu miċħuda.

Li tippubblika reverse proxy hija deċiżjoni ta' aċċess separata, mhux estensjoni trasparenti tal-VPN tal-proxy stess lil kull min jista' jgħabbi l-URL pubbliku tiegħu. It-tnejn jidhru simili fuq dijagramma, u jiddiferixxu f'min jitħalla jidħol. Li tiddeċiedi dik il-kwistjoni wara l-implimentazzjoni huwa kif applikazzjoni interna ssir pubblika b'aċċident.

Ikteb liema miż-żewġ bnejt u għaliex. Il-persuna li jmiss li tmiss il-konfigurazzjoni se tassumi l-oħra. Ridirezzjoni waħda miżjuda għall-konvenjenza biżżejjed biex terġa' toħloq il-ħsara oriġinali, u s-sintomu se jidher eżattament bħal dak li għadek kemm sewwijt.

Artikli relatati