Nginx chun tosaigh, backend príobháideach taobh thiar den VPN
Labhraíonn an brabhsálaí le Nginx, agus osclaíonn Nginx an dara nasc isteach sa tollán. Cuir beirt ar a mbealach, fíoraigh an dá theastas agus coinnigh na atreoruithe poiblí go poiblí.
Lean aon iarratas amháin ó fhón ar thraein go dtí backend nach bhfuil ann ach taobh istigh de líonra príobháideach. Réitíonn an fón ainm poiblí, nascann sé le seoladh poiblí ar phort 443 agus críochnaíonn sé croitheadh láimhe TLS rialta. Glacann Nginx leis an nasc sin agus ansin osclaíonn sé an dara ceann, go hiomlán ar leith, chuig seoladh nach sroicheann sé ach trí chomhéadan VPN. Ní athraíonn aon rud ar an bhfón, agus ní bhíonn a fhios ag an bhfón riamh go raibh tollán i gceist.
Iarratas amháin a leanúint trí dhá nasc
Is idirbheart HTTP poiblí é an chuid isteach. Tá ainm poiblí, teastas poiblí agus cosán freagartha aige a chaithfidh oibriú d'aon seoladh atá ag an gcuairteoir ag an nóiméad sin. Déanann aon athrú a chuireann isteach ar an gcosán sin dochar do gach cuairteoir ag an am céanna. Sin é an fáth gurb é an chuid phoiblí an ceann is lú ar mhaith leat triail a bhaint as.
Tá an chuid amach príobháideach. Éiríonn Nginx ina chliant, réitíonn sé ainm inmheánach nó úsáideann sé seoladh seasta, agus sroicheann sé seirbhís a dhiúltódh nasc ón idirlíon.
Public client -> frontend public address:443 (TLS, public name)
Frontend -> VPN private backend 10.40.0.20:8443 (TLS, private name)
Coinnigh iad araon ar leith i d'intinn agus éiríonn an chumraíocht soiléir. Má chumascann tú iad, críochnóidh tú ag iarraidh cliant poiblí a chur chun páirtíochta i dtollán, agus is as sin a thagann formhór an mhearbhaill sa dearadh seo. Féadfaidh an chuid phríobháideach a bheith leochaileach. Ní féidir leis an gceann poiblí.
Sula dtógfaidh tú aon rud as seo, deimhnigh go bhfuil foilsiú an fheidhmchláir d'aon ghnó. Is nochtadh oibre é seachfhreastalaí oibre freisin, agus caithfidh an tsamhail fhíordheimhnithe a bheith ina cinneadh, ní ina fho-iarmhairt.
Caithfidh ainm an gheata maireachtáil tríd an tollán
Tá gaiste caolchúiseach i réiteach ainmneacha. Má fhorchuirfidh DNS príobháideach an t-ainm céanna a úsáideann an phróifíl VPN dá gheata féin, féadfaidh athnascadh teacht chun deiridh ag iarraidh an geata sin a shroicheadh tríd an tollán ar cheart dó a thógáil féin. Teastaíonn ón gcliant go réiteofar an t-ainm sin sula mbeidh an tollán ann. A luaithe a réitítear laistigh den tollán é, ní féidir an nasc a thógáil ar chor ar bith.
Úsáid ainmneacha formheasta ar leith don gheata agus don backend, agus cuir teorainn le polasaí an réiteora ionas go réiteoidh gach ainm chuig an seoladh a theastaíonn óna úsáideoir. Ní chabhraíonn athrú ceanntásc Host feidhmchláir le haon rud anseo, mar is é an cliant VPN a dhéanann an chuardach.
Ansin smaoinigh ar scóip. Teastaíonn bealach ón bhfrontend chuig seoladh an backend, agus caithfidh sé freisin freagairt do chliaint phoiblí. Féadfaidh tollán iomlán ar an óstach sin an chéad riachtanas a shásamh agus an dara ceann a bhriseadh.
Nuair a cheadaíonn an polasaí é, is é tollán chuig ceann scríbe áirithe an dearadh is glaine. Nuair a éilíonn an polasaí tollán iomlán, baineann an frontend le comhthéacs líonra ar leith seachas a bheith paisteáilte le bealaí ad hoc do chuairteoirí aithnidiúla.
Scríobh an bloc freastalaí ionas go bhfíoróidh an dá chuid
Cuir i gcás go gcuireann an backend teastas i láthair don ainm seo: backend.corp.example agus go bhfreagraíonn sé ar sheoladh príobháideach. Is é nascadh le seoladh agus ainm á fhíorú go díreach cuspóir roghanna SNI agus ainm an mhodúil seachfhreastalaí.
upstream private_app {
server 10.40.0.20:8443;
}
server {
listen 443 ssl;
server_name app.example.com;
ssl_certificate /etc/nginx/tls/app-fullchain.pem;
ssl_certificate_key /etc/nginx/tls/app-key.pem;
location / {
proxy_pass https://private_app;
proxy_ssl_server_name on;
proxy_ssl_name backend.corp.example;
proxy_ssl_trusted_certificate /etc/nginx/trust/backend-ca.pem;
proxy_ssl_verify on;
proxy_ssl_verify_depth 3;
proxy_set_header Host app.example.com;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
Is ionadaí é gach cosán agus seoladh thuas. Is iad na codanna tábhachtacha na cinn a choinníonn fíorú ar siúl: ainm le seiceáil, beartán muiníne lenar féidir é a sheiceáil, agus doimhneacht a fhreagraíonn don slabhra formheasta.
proxy_set_header Host app.example.com is d'aon ghnó é. Ba chóir an backend a chumrú chun an tionscnamh poiblí sin a ghlacadh, agus ba chóir dó muinín a bheith aige as ceanntásca a sheoltar ar aghaidh ón bhfrontend seo amháin. Scríobh thar an X-Forwarded-For le seoladh an chliaint atá ceart do sheachfhreastalaí amháin agus mícheart do shlabhra, mar sin teastaíonn a shocrú féin de sheoltaí iontaofa ó imscaradh ilsheachfhreastalaí.
Tabhair ar an tionscnamh poiblí iompar mar thionscnamh poiblí
Ba chóir don fheidhmchlár URLanna iomlána, atreoruithe agus fianáin a eisiúint don tionscnamh poiblí. Má atreoraíonn sé cuairteoir chuig backend.corp.example, seoltar an cuairteoir sin chuig ainm nach féidir leis a réiteach.
Deisigh é sin trí shocrú URL seachtrach an fheidhmchláir agus polasaí atreoraithe athbhreithnithe, ní trí ainmneacha óstach a athscríobh i gcorp na bhfreagraí. Déanann ionadú teaghrán in ábhar treallach dochar do phálastaí sínithe agus cruthaíonn sé fabhtanna atá deacair a rianú.
Tá fianáin tuillte ag an gcúram céanna. Ní sheolfaidh brabhsálaí nach bhfuil aithne aige ach ar an ainm poiblí fianán atá scóipithe chuig an ainm príobháideach riamh.
Deimhnigh freisin gur féidir le Nginx an soicéad poiblí a shealbhú i ndáiríre. Caithfidh seirbhís ghréasáin atá ann cheana ar 443 bogadh nó caithfidh an frontend maireachtáil in áit eile, mar ní féidir le dhá phróiseas an seoladh agus an port céanna a cheangal.
Seiceáil gach cuid san áit a ritheann sé i ndáiríre
Bailíochtaigh an chumraíocht leis an parsálaí suiteáilte roimh aon athlódáil, ionas nach leagfaidh clóscríobh botún an t-éisteoir atá ag freastal faoi láthair.
Ansin tástáil an chuid backend ó óstach an fhrontend féin, sa chomhthéacs líonra céanna a úsáideann Nginx. Cruthaíonn ping tríd an tollán inrochtaineacht agus aon rud faoi TLS, údarú nó an feidhmchlár.
Ar deireadh déan iarratas poiblí úr ar an bhfíorainm óstaigh le fíorú teastais rialta, agus breathnaigh ar an gcosán freagartha seachas ar chorp an fhreagra amháin.
Coinnigh an dá bhreathnóireacht leis an chumraíocht atá imscartha, agus taifead cad a tharlaíonn nuair nach bhfuil an tollán ar fáil. Ba chóir don frontend earráid upstream rialaithe a thabhairt ar ais, ní titim go ciúin chuig backend eile nach ndearna aon duine doiciméadú air. Is toradh maith é 502 le líne logála shoiléir. Leathanach i dtaisce ó thionscnamh neamhbheartaithe nach toradh maith é.