Olùpín kan tí ó ń dáhùn lórí kọ̀mpútà àgbékalẹ̀ nìkan tí kò sì dáhùn níbòmíràn ni ó máa ń so mọ́ àdírẹ́sì tí kò tọ́. Olùpín tí ó gba ìsopọ̀ ṣùgbọ́n tí ó kọ ojú-ìwé ni ó máa ń kùnà nínú àyẹ̀wò orúkọ agbàlejò. Ìwọ̀nyí jẹ́ àwọn àìdáa ọ̀tọ̀ọ̀tọ̀ pẹ̀lú àwọn àtúnṣe ọ̀tọ̀ọ̀tọ̀, àti yíyan ìṣètò tí ó tọ́ dá lórí ẹni tí ó gbọdọ̀ dé ibi iṣẹ́ àti bí wọ́n ṣe dé.

Àwọn ìbéèrè mẹ́ta ń pinnu ìdáhùn: ẹni tí ó ń sopọ̀, àdírẹ́sì tí ó lè dé, àti bóyá àtúnṣe ààyè tààrà gbọdọ̀ ṣiṣẹ́ fún wọn.

Bẹ̀rẹ̀ pẹ̀lú socket, kì í ṣe fáìlì ìṣètò

Ka ohun tí ìlànà tí ń ṣiṣẹ́ so mọ́ gan-an nínú ipò nẹ́tíkì̀ kan náà tí ó bẹ̀rẹ̀ rẹ̀, nítorí kọ́nténírì tàbí ààyè orúkọ lè ní socket tí shell agbàlejò kò rí. Ọ̀wọ̀n gbígbọ́ ń dáhùn ìbéèrè àkọ́kọ́: ipa ọ̀nà àdúgbò nìkan, interface kan pàtó, tàbí gbogbo interface.

ss -ltn '( sport = :8080 )'
ss -ltnp | grep node

Àdírẹ́sì loopback jẹ́ àkọ́kọ́ ààbò tí ó sì kò wúlò fún alábàákẹ́gbẹ́ tí ó jìnnà. Ìsopọ̀ wildcard rọrùn ó sì ń fi ibùdókọ̀ hàn lórí gbogbo interface tí ó ní ipa ọ̀nà, èyí tí ó gbòòrò ju ohun tí ọ̀pọ̀ ènìyàn ń ní lọ́kàn lórí ẹ̀rọ tí ó tún gbé tunnel. Àdírẹ́sì pàtó jẹ́ àárín àyàn, ó sì ń ṣiṣẹ́ nìkan bí interface bá ní àdírẹ́sì yẹn ní àkókò tí wọ́n dá socket. Ìyàtọ̀ ṣe pàtàkì nítorí méjì nínú àwọn ìsopọ̀ mẹ́ta yìí dà bí ẹyọ kan nínú ẹ̀rọ aṣàwákiri, wọ́n sì ń hùwà yàtọ̀ pátápátá nígbà tí interface kejì bá wà.

Tẹ̀lé àkíyèsí yẹn kí o tó fi ọwọ́ kàn àwọn ipa ọ̀nà tàbí àwọn òfin odi iná. Bí ìlànà bá ń gbọ́ ní àdírẹ́sì tí kò tọ́, kò sí ìtọ́sọ́nà ètò kan tí yóò mú alábàákẹ́gbẹ́ dé ibẹ̀.

Yan àdírẹ́sì ìsopọ̀ gẹ́gẹ́ bí ẹni tí ó gbọdọ̀ dé ọ̀dọ̀ rẹ̀

Bí ìwọ nìkan lórí ẹ̀rọ yìí bá nílò ojú-ìwé, pa ìsopọ̀ loopback mọ́ kí o sì dúró. Bí ẹlẹgbẹ́ kan lórí tunnel kan náà bá nílò rẹ̀, so àdírẹ́sì interface tunnel kí odi iná sì gbà ìwọ̀n ààyè fún orísun yẹn nìkan. Gbígbé olùpín ìdàgbàsókè jáde ju àwọn ènìyàn tí ń dán an wò lọ́nà àìdánilójú jẹ́ àṣà tí yóò ní ìparí fi ibi iṣẹ́ hàn sí íńtánẹ́ẹ̀tì.

Bí ẹ̀rọ aṣàwákiri nínú kọ́nténírì bá nílò láti dé ọ̀dọ̀ olùpín, àdírẹ́sì ìsopọ̀ gbọdọ̀ jẹ́ èyí tí nẹ́tíkì̀ kọ́nténírì lè tọ́sọ́nà dé, èyí sì kì í sábà jẹ́ àdírẹ́sì tí agbàlejò yanjú fún ara rẹ̀. Pinnu ọ̀ràn náà kí o tó ṣàtúnṣe ìṣètò, nítorí àwọn ọ̀ràn mẹ́ta ń mú iye mẹ́ta yàtọ̀ jáde, ọ̀kan nìkan sì tọ́. Sísa àrokò níbí ń fi àkókò ṣòfò ju apá kankan ìṣètò yìí lọ.

Lẹ́yìn náà ṣètò àdírẹ́sì ní ìrísí tí ẹ̀rọ ìbẹ̀rẹ̀ rẹ gbà lóòótọ́. Fáìlì ìṣètò àti skíríptì tí ń kọ́ olùpín lọ́nà ìṣèlọ́gbọ́n kò lo àwọn àṣàyàn kan náà:

devServer: {
  host: "10.77.0.20",
  port: 8080,
  allowedHosts: ["dev.corp.example"],
}

Àdírẹ́sì nínú àgé yẹn jẹ́ àpẹẹrẹ ó sì dúró fún àdírẹ́sì VPN tí agbàlejò ní. Bí iṣẹ́ náà bá ń kọ́ olùpín pẹ̀lú new WebpackDevServer(options, compiler) gbé àwọn àṣàyàn kọjá nípasẹ̀ àríyànjiyàn olùdá ní ààyè rẹ̀, nítorí pé àkànṣe ohun-ìní devServer nínú ìṣètò webpack kì í ṣe àyẹ̀wò lórí ipa ọ̀nà yẹn. Ìyàtọ̀ yẹn láàárín fáìlì ìṣètò àti Node API ń mú àwọn tí ń ṣe àdàkọ àgé sínú iṣẹ́ tí kì í kà á. Àwọn ìwé dev-server ń ya àwọn ọ̀nà ìbẹ̀rẹ̀ méjì sọ́tọ̀, wọ́n sì jẹ́ ìtọ́kasí tí a gbọdọ̀ fi ṣe àfiwé pẹ̀lú ẹ̀dà tí a ń lò.

Bá àyẹ̀wò orúkọ agbàlejò mu pẹ̀lú àwọn orúkọ tí o fọwọ́ sí

Àyẹ̀wò orúkọ agbàlejò wà kí ojú-ìwé tí a pèsè láti orúkọ tí olùgbógun ń ṣàkóso má ba à bá olùpín ìdàgbàsókè rẹ sọ̀rọ̀ nípasẹ̀ ẹ̀rọ aṣàwákiri. Píparẹ́ rẹ̀ pẹ̀lú allowedHosts: "all" ń mú ìdáàbò yẹn kúrò, ìrọ̀rùn sì kì í sábà tọ́ sí i lórí ẹ̀rọ tí ó lè dé àwọn iṣẹ́ inú. Àyẹ̀wò náà jẹ́ owó kékeré láti ní ìtẹ́lọ́rùn tọ́ nígbà tí o bá mọ àwọn orúkọ tí ẹ̀rọ aṣàwákiri yóò rán.

Ṣe àkójọ àwọn orúkọ gbẹ́kẹ̀ tí ìwọ yóò lò, pẹ̀lú orúkọ àdáni tí ó ń yanjú sí àdírẹ́sì tunnel. Bí alábàákẹ́gbẹ́ bá yanjú orúkọ sí àdírẹ́sì mìíràn ju èyí tí o so mọ́ lọ, ìwọ ní ìṣòro yíyanjú orúkọ kì í ṣe ìṣòro ìṣètò olùpín, fífi orúkọ náà kún àkójọ ìyọ̀nda kò sì ní tún un ṣe. Jẹ́rìí yíyanjú náà láti ọ̀dọ̀ alábàákẹ́gbẹ́, kì í ṣe láti ọ̀dọ̀ olùpín.

Pa àwọn ìṣàkóso mẹ́ta mọ́ sọ́tọ̀ nínú orí rẹ: àdírẹ́sì ìsopọ̀ ń pinnu àwọn interface tí ó gba ìsopọ̀, àkójọ ìyọ̀nda ń pinnu àwọn àkọlé Host tí a gbà, ìjẹ́rìí sì ń pinnu ẹni tí a gbà láàyè láti wọlé. Ìkẹta nìkan ni ìṣàkóso àyè, olùpín ìdàgbàsókè sì kì í sábà ní ọ̀kan. Àdírẹ́sì tunnel kì í sì í ṣe ọ̀nà ìjẹ́rìí, nítorí ẹnikẹ́ni tí ó lè tọ́sọ́nà dé ibẹ̀ ti wà nínú ààlà tí o gbẹ́kẹ̀ lé.

Jẹ́rìí ojú-ìwé àti socket àtúnṣe ààyè tààrà papọ̀

Gbé ìbéèrè tuntun láti ọ̀dọ̀ alábàákẹ́gbẹ́ tí a pinnu pẹ̀lú ètò tí a ṣètò, kí o sì ka èsì dípò kásì. Fún HTTPS, pa orúkọ agbàlejò tí a retí àti ìjẹ́rìí ìwé-ẹ̀rí mọ́, nítorí ìkìlọ̀ ẹ̀rọ aṣàwákiri kì í ṣe ìdánwò ìgbàláyè tí ó ṣàṣeyọrí. Ojú-ìwé tí ń hàn nígbà tí àtúnṣe ààyè tààrà ń kùnà ní ìdákẹ́jẹ́ẹ́ ni àṣeyọrí apá tí ó wọ́pọ̀ jùlọ níbí, ó sì rọrùn láti pàdánù nígbà àyẹ̀wò kíákíá.

curl -sS -o /dev/null -w "%{http_code} %{remote_ip}\n" http://dev.corp.example:8080/
curl -sS -i http://10.77.0.20:8080/ | head -n 5

Lẹ́yìn náà ṣí ìwádìí nẹ́tíkì̀ ẹ̀rọ aṣàwákiri kí o sì wo ìsopọ̀ WebSocket. Ojú-ìwé lè gbé lórí orúkọ agbàlejò kan, ibùdókọ̀ àti ètò nígbà tí socket àtúnṣe ń lo òmíràn, ìdí nìyẹn tí a fi gbọdọ̀ ṣàyẹ̀wò méjèèjì sọ́tọ̀. Ṣètò URL alábàákẹ́gbẹ́ tí a kọ sílẹ̀ nìkan nígbà tí ipa ọ̀nà tí a gbé kalẹ̀ bá nílò iye mìíràn gan-an, kí o sì yàn láti tún ipa ọ̀nà ṣe ju kíkọ́ alábàákẹ́gbẹ́ ní ọ̀nà àyíká.

Kọ àdírẹ́sì olùgbọ́, orúkọ tí a gbà, orísun tí a gbà ààyè àti èsì méjèèjì sínú àwọn àkọsílẹ̀ iṣẹ́. Àkọsílẹ̀ yẹn yóò wà fún ẹni tó kàn tí yóò bẹ̀rẹ̀ ibi iṣẹ́ tí yóò sì ṣe àbájáde ìdí tí ojú-ìwé fi ń gbé ṣùgbọ́n tí kò ṣe àtúnṣe rárá.

Àwọn àpilẹ̀kọ tó jọra