Bi buƙata ɗaya daga wayar da ke cikin jirgin ƙasa zuwa backend wanda yake wanzuwa kawai a cikin cibiyar sadarwa mai zaman kansa. Wayar tana warware suna na jama'a, ta haɗu da adireshin jama'a a tashar 443 kuma ta kammala TLS handshake na yau da kullum. Nginx yana karɓar waccan haɗin sannan ya buɗe na biyu, wanda ya bambanta gaba ɗaya, zuwa adireshin da yake samun sa ne kawai ta hanyar VPN. Babu abin da ke canzawa a wayar, kuma wayar ba ta taɓa sanin cewa an yi amfani da rami ba.

Bin buƙata ɗaya ta hanyoyin haɗi biyu

Sashin shigowa shine ciniki na HTTP na jama'a. Yana da suna na jama'a, takardar shaida ta jama'a da hanyar amsa da dole ta yi aiki ga kowane adireshin da baƙon yake da shi a lokacin. Duk wani canji da ya dami wannan hanyar yana karya dukkan baƙi lokaci ɗaya. Shi ya sa sashin jama'a shine wanda ba ka son yin gwaji a kansa.

Sashin fita na sirri ne. Nginx ya zama abokin ciniki, ya warware suna na ciki ko ya yi amfani da tabbataccen adireshi, kuma ya isa sabis wanda zai ƙi haɗi daga intanet.

Public client  -> frontend public address:443   (TLS, public name)
Frontend       -> VPN private backend 10.40.0.20:8443  (TLS, private name)

Ka raba su a zuciyarka kuma tsarin zai zama bayyananne. Idan ka haɗa su, za ka ƙare da ƙoƙarin sa abokin ciniki na jama'a ya shiga cikin rami, kuma daga nan ne yawancin ruɗani a wannan ƙira yake zuwa. Sashin sirri na iya zama mai rauni. Na jama'a ba zai iya ba.

Kafin ka gina kowane abu daga cikin wannan, tabbatar da cewa wallafa aikace-aikacen an yi shi da gangan. Proxy mai aiki shima fallasa ce mai aiki, kuma tsarin tabbatarwa dole ya zama shawara ba sakamako na gefe ba.

Sunan ƙofar dole ya tsira daga ramin

Akwai tarko mai hankali a warware sunaye. Idan DNS na sirri ya maye gurbin sunan da bayanin VPN yake amfani da shi don ƙofarsa, sake haɗawa na iya ƙarewa da ƙoƙarin isa waccan ƙofar ta ramin da ya kamata ya gina da kansa. Abokin ciniki yana buƙatar a warware wannan sunan kafin ramin ya wanzu. Da zarar an warware shi a cikin ramin, ba za a taɓa iya gina haɗin ba.

Yi amfani da sunaye daban-daban da aka yarda da su don ƙofa da backend, kuma ka iyakance manufar mai warwarewa domin kowane suna ya warware zuwa adireshin da mai amfani da shi yake buƙata. Canza kan Host na aikace-aikace ba ya taimaka a nan, domin abokin ciniki na VPN ne yake yin binciken.

Sannan ka yi tunani game da iyaka. Frontend yana buƙatar hanya zuwa adireshin backend, kuma dole ya ci gaba da amsa wa abokan ciniki na jama'a. Cikakken rami a wannan mai masaukin zai iya cika buƙata ta farko kuma ya karya ta biyu.

Inda manufar ta yarda, rami zuwa takamaiman manufa shine mafi tsaftataccen ƙira. Inda manufar ta tilasta cikakken rami, frontend yana cikin wani mahallin cibiyar sadarwa daban maimakon a faca shi da hanyoyi na wucin gadi ga sanannun baƙi.

Rubuta sashin uwar garke domin sassan biyu su tabbatar

A ce backend yana gabatar da takardar shaida ga wannan sunan: backend.corp.example kuma yana amsawa a kan adireshi na sirri. Haɗuwa da adireshi yayin tabbatar da suna shine ainihin abin da zaɓuɓɓukan SNI da suna na module proxy suka tsara don.

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;
    }
}

Kowane hanya da adireshi da ke sama alama ce kawai. Muhimman sassan su ne waɗanda suke barin tabbatarwa a buɗe: suna da za a duba, fakitin amincewa da za a duba da shi, da zurfin da ya dace da sarkar da aka yarda.

proxy_set_header Host app.example.com an yi shi da gangan. Backend ya kamata a daidaita shi don karɓar wannan asalin jama'a, kuma ya kamata ya amince da kanun labarai da aka tura kawai daga wannan frontend. Rubuta a kan X-Forwarded-For da adireshin abokin ciniki daidai ne ga proxy ɗaya kuma ba daidai ba ga sarki, saboda haka turawa mai proxy da yawa tana buƙatar nata tsarin adireshin amintattu.

Sa asalin jama'a ya yi kama da asalin jama'a

Aikace-aikacen ya kamata ya fitar da cikakkun URL, juyawa da kukis ga asalin jama'a. Idan ya juya baƙo zuwa backend.corp.example, wannan baƙon ana tura shi zuwa sunan da ba zai iya warwarewa ba.

Gyara hakan ta hanyar saitin URL na waje da aikace-aikacen ke goyan bayan da manufar juyawa da aka duba, ba ta hanyar sake rubuta sunayen mai masauki a jikin amsa ba. Maye gurbin igiya a cikin abun ciki na son rai yana lalata kayan aiki da aka sa hannu kuma yana haifar da kurakurai da suke da wuya a gano.

Kukis ma sun cancanci irin wannan kulawa. Kuki da aka iyakance ga sunan sirri ba za a taɓa tura shi daga burawza da ya san na jama'a kaɗai ba.

Tabbatar kuma cewa Nginx zai iya mallakar soket na jama'a da gaske. Sabis ɗin yanar gizo da ke kan 443 dole ya matsa ko frontend dole ya zauna wani wuri, domin tsari biyu ba za su iya ɗaure adireshi da tashar ɗaya ba.

Duba kowane sashi a inda yake aiki da gaske

Tabbatar da tsarin da parser ɗin da aka saka kafin kowane sake lodawa, domin kuskuren rubutu kada ya faɗaɗa mai saurare wanda ke hidima a yanzu.

Sannan gwada sashin backend daga mai masaukin frontend da kansa, a cikin wannan mahallin cibiyar sadarwa da Nginx yake amfani da shi. Ping ta ramin yana tabbatar da isarsa kuma babu wani abu game da TLS, izini ko aikace-aikacen.

A ƙarshe yi sabon buƙatar jama'a zuwa ainihin sunan mai masauki tare da tabbatar da takardar shaida na yau da kullum, kuma ka lura da hanyar amsa ba gawar amsa kaɗai ba.

Ka adana dukkan dubawa biyu tare da tsarin da aka tura, kuma ka rubuta abin da ke faruwa idan ramin ba ya samuwa. Frontend ya kamata ya mayar da kuskuren upstream da aka sarrafa, ba ya faɗi a hankali zuwa wani backend wanda babu wanda ya rubuta shi ba. 502 tare da bayyanannen layin log kyakkyawan sakamako ne. Shafi da aka adana daga asalin da ba a yi niyya ba ba haka yake ba.

Labarai masu alaƙa