HAProxy 302 sí ohun èlò àdáni: ta ni ó ṣí ìfò tó kejì?
Ìtúnjáde máa ń dá ìsopọ̀ kejì padà fún aṣàwákiri. Fi ìbéèrè náà ránṣẹ́ sí ẹ̀yìn-ìparí, kí o sì tún àwọn ìtúnjáde pípé àti kúkì ohun èlò náà ṣe.
Ẹnìkan ta host HAProxy gbangba sí ohun èlò inú ilé, ó sì béèrè ìdí tí aṣàwákiri kò fi lè tẹ̀lé. Proxy dé ohun èlò náà nípasẹ̀ VPN rẹ̀, ìtúnjáde dá Location header padà, aṣàwákiri sì gbìyànjú àdírẹ́sì tí ó wà nínú ihò náà nìkan. Láti ìta, ojú-ìwé kàn ń dúró. Ìpinnu náà jẹ́ nípa ẹni tí ó ṣí ìsopọ̀ kejì, ìyẹn ni ó yà ìtúnjáde kúrò lọ́dọ̀ ẹ̀yìn-ìparí.
Ọ̀nà méjì tí ó dà bí ara wọn nínú ìṣètò
Ìtúnjáde parí ìpààrọ̀ pẹ̀lú ìdáhùn kan. Aṣàwákiri ka Location, ó sì bẹ̀rẹ̀ ìbéèrè tuntun láti ibi tí ó wà, ìyẹn ni nẹ́tíwọ́kì tí o kò tíì ṣàkóso rí. Proxy kò sí nínú mọ́. Gbogbo ohun tí ó tẹ̀lé da lórí DNS, ọ̀nà àti ìgbẹ́kẹ̀lé aṣàwákiri fúnra rẹ̀, nítorí náà èsì yàtọ̀ sí ibi tí olùlò ṣí aṣàwákiri:
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
Ẹ̀yìn-ìparí proxy ń dá ìgbésẹ̀ kejì dúró ní ẹ̀gbẹ́ server. Proxy ṣí i nípasẹ̀ ọ̀nà tí ó ti ní, aṣàwákiri sì ń bá orúkọ gbangba kan sọ̀rọ̀. Bí ihò náà bá já, aṣàwákiri gba àṣìṣe dípò URL tí kò lè tẹ̀lé. Ìyàtọ̀ yìí ni ó tún jẹ́ kí àìsí náà lè ṣe àyẹ̀wò, nítorí àṣìṣe náà farahàn níbi tí àwọn log wà:
GET /app client -> proxy
GET /app proxy -> 10.40.0.20:8080 over the VPN
response proxy -> client
Ìwé ìtúnjáde HAProxy fa ìlà yìí gan-an: dá aṣàwákiri lóhùn pẹ̀lú ìtúnjáde yàtọ̀ sí fífi ìbéèrè ránṣẹ́ sí ẹ̀yìn-ìparí. Àwọn ìtọ́nisọ́nà méjì náà wà ní ìlà mélòó kan láàárín nínú fáìlì ìṣètò, wọ́n sì ń ṣe pátápátá. Ọ̀kan parí ìbéèrè, èkejì bẹ̀rẹ̀ ìbéèrè kejì tí proxy ní.
Ohun tí aṣàwákiri nílò tí VPN server kò fún un
Ìbéèrè aṣàwákiri fúnra rẹ̀ nílò ohun mẹ́rin tí ó lè máà ní: ìdáhùn DNS fún orúkọ àdáni, ọ̀nà sí àdírẹ́sì yẹn, àṣẹ láti dé iṣẹ́ tí ń gbọ́, àti ìgbẹ́kẹ̀lé fún ìwé-ẹ̀rí tí iṣẹ́ yẹn fi hàn. Host proxy ní gbogbo mẹ́rin náà nípasẹ̀ ihò rẹ̀. Kò sí ọ̀kan nínú wọn tí ó ń kó lọ sí aṣàwákiri tí kò tíì wà nínú ihò yẹn, nítorí ihò jẹ́ ẹ̀yà host, kì í ṣe ti URL.
Àlàfo yẹn ṣàlàyé àmì «ó fẹ́rẹ̀ẹ́ ṣiṣẹ́». Ìbéèrè àkọ́kọ́ ṣàṣeyọrí, pẹpẹ àdírẹ́sì yí padà, ìsopọ̀ sì ń dúró tàbí kùnà nígbà tí proxy wà ní àlàáfíà ní gbogbo ìgbà. Kò sí ohun tí ó bàjẹ́ nínú ìṣètò proxy, àti péṣẹ̀ tún un kò lè ràn aṣàwákiri tí kò ní ọ̀nà sí 10.40.0.20 lọ́wọ́. Yálà aṣàwákiri gba ọ̀nà, tàbí proxy gbọ́dọ̀ ṣe ìsopọ̀ náà ní orúkọ rẹ̀.
Nígbà tí proxy nìkan lè dé ohun èlò náà
Yọ ìgbésẹ̀ ìtúnjáde kúrò, kí o sì fi àwọn ìbéèrè yẹn ránṣẹ́ sí ẹ̀yìn-ìparí tí ó tọ́ka sí àdírẹ́sì àdáni. Ẹ̀yìn-ìwájú pa orúkọ gbangba rẹ̀ mọ́ nígbà tí ẹ̀yìn-ìparí ń pinnu ibi tí ìbéèrè ń lọ gan-an. Kò sí ohun tí ó yí padà nínú ọ̀nà aṣàwákiri, nítorí proxy dáwọ́ ṣíṣe àpèjúwe ibi-ìlọ, ó sì di ibi-ìlọ fúnra rẹ̀. Fún ohun èlò tí ó mọ̀ọ́mọ̀ ń gbọ́ lórí port inú 8080, block server kúkúrú:
backend private_app
mode http
option httpchk GET /health
server app1 10.40.0.20:8080 check
Ka block yẹn gẹ́gẹ́ bí gbólóhùn nípa tábìlì ìpín ọ̀nà proxy: 10.40.0.20 gbọ́dọ̀ dé nípasẹ̀ host proxy fúnra rẹ̀, tí ó túmọ̀ sí nípasẹ̀ interface VPN kì í ṣe ọ̀nà àkọ́kọ́. Ọ̀rọ̀ kókó check kàn ń jábọ̀ ohun tí ọ̀nà yẹn ń ṣe, ọ̀nà ìlera sì gbọ́dọ̀ wà nínú ohun èlò, bí bẹ́ẹ̀ kọ́ ìdánwò kọ̀ọ̀kan yóò fi server hàn bí ẹni tí ó ṣubú. Ìdánwò tí ó kọjá kò ṣe ẹ̀rí kankan nípa aṣàwákiri, kò sì rọ́pò ìlànà tí ń pinnu ẹni tí ó lè lo ẹ̀yìn-ìparí.
Ẹ̀ka yìí kì í ṣe ẹ̀yìn-ìwájú pípé. Pa olùgbọ́, ìjẹ́rìí, yíyan host àti ọ̀nà tí a gbà, àti ìlànà tí ń pinnu ẹni tí ó lè dé ohun èlò náà mọ́. Bá protocol ẹ̀yìn-ìparí mu pẹ̀lú, nítorí ẹ̀yìn-ìparí HTTPS nílò ìjẹ́rìí ìwé-ẹ̀rí àti ìṣètò ìdánimọ̀ server, ṣíṣe àfojúdi ìjẹ́rìí yẹn yóò sì sọ ìsopọ̀ àdáni di èyí tí a kò jẹ́rìí.
Jẹ́rìí ọ̀nà ìpadà ní ẹ̀gbẹ́ méjèèjì kí o tó kéde ìṣẹ́gun. Ohun èlò náà ń rí ìsopọ̀ láti proxy báyìí, nítorí náà àwọn log rẹ̀ àti metadata àdírẹ́sì aṣàwákiri yóò ṣàpèjúwe proxy àyàfi bí o bá ṣètò bí bẹ́ẹ̀ kọ́. Pinnu bí a ṣe ń tọ́jú ìdánimọ̀ àti àwọn àdírẹ́sì tí a fi ránṣẹ́, kí o sì dán ìpinnu yẹn wò dípò kí o kàn gbà á.
Àwọn ìtúnjáde ohun èlò fúnra rẹ̀ ṣì ń tọ́ka sí inú
Fífi ìbéèrè àkọ́kọ́ ránṣẹ́ jẹ́ ìdajì ìsopọ̀ nìkan. Ohun èlò lè gbé àwọn ìtúnjáde pípé jáde, URL ohun-ìní tí a kọ sílẹ̀, tàbí kúkì tí ó mọ́ orúkọ tí ó mọ̀ ní inú, gbogbo wọn sì ń dá aṣàwákiri padà sí àdírẹ́sì tí kò lè dé. Location header tí ó tọ́ka sí orúkọ inú dà bí ìṣòro àkọ́kọ́ gan-an, ìdí nìyẹn tí a fi ń ṣe àyẹ̀wò rẹ̀ lọ́nà tí kò tọ́ gẹ́gẹ́ bí àìsí proxy.
Ṣètò URL ìta tí a kọ sílẹ̀ fún ohun èlò àti àwọn àṣàyàn proxy rẹ̀, kí o sì mú Host header bá host àròṣọ àti ìfojúsọ́nà ìwé-ẹ̀rí mu. Kúkì tí ó mọ́ orúkọ inú kò ní padà wá nípasẹ̀ orúkọ gbangba, ìyípadà ìwọlé tí ó tẹ̀lé yóò sì dà bí àṣìṣe ìjẹ́rìí. Yí URL ìta padà kọ́kọ́, tún dán wò láti profáìlì aṣàwákiri mímọ́, kí o sì retí pé ìṣètò tí a kò parí yóò mú ìwọlé tí ó ṣàṣeyọrí àti ìpàdé tí ó kú lẹ́sẹ̀kẹsẹ̀ wá.
Gba metadata tí a fi ránṣẹ́ gbọ́ láti ọ̀dọ̀ proxy tí a yàn nìkan. Header tí aṣàwákiri kọ̀ọ̀kan lè ṣètò kò gbọ́dọ̀ di iye àṣẹ rí, bí bẹ́ẹ̀ kọ́ proxy yóò di ọ̀nà fún olùpè kan láti sọ pé òun ni ẹlòmíràn. Ìlànà yẹn kò sinmi lórí ìbéèrè ìtúnjáde, ó sì ń wà ní gbogbo àtúntò tí ó tẹ̀lé.
Pinnu irú ẹ̀dá tí o ní gan-an
Bí gbogbo olùlò bá ti ní àṣẹ VPN, ìtúnjáde sí URL àdáni lè jẹ́ ẹ̀dá tí a mọ̀ọ́mọ̀ ṣe. Jẹ́rìí ìbéèrè yẹn ní gbangba dípò kí o kàn gbà á, nítorí ẹ̀dá méjèèjì ń sin àwọn ènìyàn tí ó yàtọ̀ pátápátá. Ọ̀kan nínú wọn kò ṣiṣẹ́ rárá láti nẹ́tíwọ́kì òtẹ́ẹ̀lì, èkejì sì ń fi ohun èlò hàn fún ẹnikẹ́ni tí ó lè gbé URL gbangba. Ìyàtọ̀ yẹn gbọ́dọ̀ wà nínú àkọsílẹ̀ ẹ̀dá.
Ṣe ìdánwò náà láti ẹ̀rọ kan nínú nẹ́tíwọ́kì àwọn olùlò, kí o sì tẹ̀lé gbogbo ìfò tí aṣàwákiri ṣe, kì í ṣe ìdáhùn àkọ́kọ́ nìkan. Máa wo pẹpẹ àdírẹ́sì àti gbogbo ìbéèrè tí ó tẹ̀lé, nítorí URL pípé kan nínú tag ohun-ìní ti tó láti ba ìṣàn kan jẹ́ tí ìfò àkọ́kọ́ ti kọjá. Ìwọlé gbọ́dọ̀ ṣiṣẹ́ nípasẹ̀ orúkọ gbangba, àwọn ohun-ìní tí ó yẹ kí a kọ̀ gbọ́dọ̀ wà ní kíkọ̀.
Fífi reverse proxy jáde jẹ́ ìpinnu àwọlé ọ̀tọ̀ọ̀tọ̀, kì í ṣe ìmúdàgba VPN proxy fúnra rẹ̀ fún ẹnikẹ́ni tí ó lè gbé URL gbangba rẹ̀. Àwọn méjèèjì dà bí ara wọn nínú àwòrán, wọ́n sì yàtọ̀ ní ẹni tí a gbà láàyè láti wọlé. Pípinnu ìbéèrè yẹn lẹ́yìn ìfilélẹ̀ ni ọ̀nà tí ohun èlò inú fi di ti gbangba lójijì.
Kọ ẹni tí o kọ́ àti ìdí rẹ̀ sílẹ̀. Ẹni tí ó tẹ̀lé tí yóò fọwọ́ kan ìṣètò yóò gbà èkejì. Ìtúnjáde kan ṣoṣo tí a fi kún fún ìrọ̀rùn ti tó láti tún àìsí àkọ́kọ́ dá, àmì náà yóò sì dà bí èyí tí o ṣẹ̀ṣẹ̀ tún ṣe.