proxy_redirect ma jgħaqqadx NGINX mal-host tal-VPN tiegħek
proxy_redirect jikteb mill-ġdid headers fi tweġiba li tkun diġà waslet; qatt ma jagħżel l-upstream. Iċċekkja proxy_pass, ir-rotta lejn il-backend, imbagħad il-headers.
L-isem fih il-kelma redirect, għalhekk titwaħħal ġo blokka location meta backend wara l-VPN ma jkunx jista' jintlaħaq. Xejn ma jinbidel, u l-konklużjoni ovvja hija li d-direttiva hija miksura jew teħtieġ sintassi differenti. Dak li ġara tassew huwa aktar sempliċi u inqas ta' tifħir: proxy_redirect jaħdem fuq tweġiba li tkun diġà rritornat, u f'din is-sistema l-ebda talba qatt ma waslet hekk 'il bogħod.
Żewġ direttivi, żewġ mumenti f'talba waħda
Talba HTTP permezz ta' prokuri maqlub tgħaddi minn diversi deċiżjonijiet bl-ordni, u ż-żewġ direttivi jinsabu fit-truf opposti ta' dak is-sekwenza. Waħda tagħżel fejn tmur it-talba. L-oħra teditja ċerti headers fit-tweġiba li terga' lura.
| Directive | When it acts | What it can change |
|---|---|---|
proxy_pass | Before any bytes leave the proxy | Which upstream receives the request |
proxy_redirect | After the upstream responds | Matching Location and Refresh text |
Dan l-ordni huwa t-tweġiba kollha. Jekk it-tieni ringiela qatt ma tiġi eżegwita għax l-ewwel waħda falliet, it-tieni direttiva mhijiex ikkonfigurata ħażin, hija sempliċement mhux aċċessibbli. Kemm tista' tikteb mill-ġdid it-tieni linja, it-tweġiba li kellha teditja ma tinħoloqx. Iddisinjastja mill-ewwel ringiela 'l barra, u l-imġiba konfuża tinżel għal rotta nieqsa jew konnessjoni miċħuda.
L-għażla tal-upstream tappartjeni lil proxy_pass
Ejja ngħidu li NGINX jaħdem fuq host tad-dħul pubbliku u jista' jilħaq applikazzjoni f'10.40.0.20:8080 permezz tal-VPN tiegħu. Il-framment li jagħżel dik l-applikazzjoni jidher hekk, ġewwa blokka server eżistenti:
location / {
proxy_pass http://10.40.0.20:8080;
}
Uża l-iskema, l-indirizz u l-port veri, u ttratta dan bħala framment u mhux bħala sistema. Il-host tad-dħul irid ukoll iżomm ir-rotta tal-VPN, mogħdija tal-ibgħat permessa u traffiku tar-ritorn li jaħdem lejn dak is-servizz, għax prokuri li jilħaq indirizz fuq il-karta xorta jkun irid il-kunsens tal-qalba.
Ir-referenza tal-modulu proxy iżżomm l-għażla tal-upstream separata mill-kitba mill-ġdid tal-headers tat-tweġiba, u tinnota li valur proxy_pass li fih URI jbiddel kif jiġi sostitwit il-prefiss location li jaqbel. Iż-żieda jew it-tneħħija ta' komponenti tal-mogħdija mingħajr ma tiġi ċċekkjata l-URL li tistenna l-applikazzjoni hija mod affidabbli biex tipproduċi 404 li jidher bħal falliment ta' routing.
proxy_redirect jissewwi tweġibiet li jnixxu indirizz privat
Ladarba t-traffiku jiċċirkola, backend jista' jwieġeb bi header Location li jsemmi l-indirizz privat tiegħu. Browser li jsegwi dak il-header jitlaq mill-punt tad-dħul pubbliku u jipprova jilħaq xi ħaġa li ma jistax jissolva. Kitba mill-ġdid tat-tweġiba kkonfigurata apposta tpoġġi l-URL privat fuq dak pubbliku:
proxy_redirect http://10.40.0.20:8080/ https://app.example.com/;
Issostitwixxi ż-żewġ naħat b'valuri veri. Ifhem ukoll l-ambitu dejjaq: it-test tal-headers Location u Refresh li jaqblu jiġi miktub mill-ġdid, imma l-URLs inkorporati f'HTML, JavaScript jew fajls imniżżla ma jiġux.
Jekk applikazzjoni tibni links assoluti kullimkien, is-soluzzjoni dejjiema hija l-konfigurazzjoni tagħha stess tal-URL estern, mhux lista dejjem tikber ta' regoli tal-kitba mill-ġdid fuq il-prokuri. Iż-żieda ta' regoli sakemm il-ħruġ jidher tajjeb tipproduċi konfigurazzjoni li tfalli fl-ewwel paġna li ħadd ma pprova. Aġġustament wieħed korrett tal-applikazzjoni jissostitwixxi l-kollezzjoni kollha.
X'ma jistax isewwi l-kitba mill-ġdid tal-header
Diversi problemi ġirien jidhru bħal problemi ta' ridirezzjoni u mhumiex. Il-header Host mibgħut lill-upstream jista' jkollu jaqbel mal-host virtwali tal-backend. Upstream TLS jista' jkun jeħtieġ isem ta' server speċifiku flimkien ma' verifika taċ-ċertifikat, u l-kitba mill-ġdid ta' header tat-tweġiba ma tgħin lil ebda wieħed.
L-ambitu tal-cookies u l-attributi tad-dominju jappartjenu lill-applikazzjoni u lill-konfigurazzjoni tagħha. Prokuri jista' jarmi jew jikteb mill-ġdid headers il-ġurnata kollha u xorta jipproduċi sessjoni li tfalli fit-tieni talba, għax il-cookie inħarġet għal host li l-browser qatt ma żar. Dak il-falliment jidher intermittenti, u għalhekk jibqa' ħaj daqshekk fil-vojt tal-biljetti. Il-qari tad-dominju tal-cookie normalment itemm l-investigazzjoni f'minuta.
Żomm ukoll l-awtentikazzjoni u l-għażla tal-backend limitati għall-applikazzjoni maħsuba. Prokuri maqlub pubbliku għandu jesponi applikazzjoni waħda permezz tal-VPN tas-server minflok isir gateway ġenerali għal kull indirizz privat li dak il-host jista' jilħaq. location ġeneriku wieħed li jibgħat kull ma jitlob is-sejjieħ jibdel servizz espost wieħed f'mappa tan-netwerk privat tiegħek. Semmi l-upstream b'mod espliċitu u żommu hemm.
Ittestja bl-ordni li biha tivvjaġġa t-talba
Ikkonferma tliet affarijiet b'ordni: NGINX għażel il-location maħsuba, temm talba lill-backend, u l-browser segwa kull ridirezzjoni aktar tard u għabba s-sotto-riżorsi. Kull pass għandu l-linji tal-log tiegħu, u l-qari tagħhom bl-ordni jbiddel 502 vag fi skoperta konkreta.
Id-distinzjoni li għandek bżonn hija bejn konnessjoni upstream falluta u browser mibgħut lejn isem privat ma jintlaħaqx. L-ewwel tidher fil-log tal-iżbalji tal-prokuri; it-tieni tidher bħala talba li qatt ma tasal, bil-browser jilmenta dwar host li ma jistax jissolva. Żewġ problemi differenti, żewġ fajls differenti, u wieħed biss minnhom għandu x'jaqsam ma' proxy_redirect.