VPN-työkalun asetukset: käynnistysympäristö vai vienti koukussa?
Koukku käynnistää omat lapsensa, ei jo avaamaasi kuorta. Käynnistysympäristö pitää yksityisen päätepisteen vain siinä yhdessä komennossa, joka sitä tarvitsee.
VPN-koukku, joka vie API-päätepisteen, muuttaa käynnistämiensä prosessien ympäristöä, ei sen päätteen, joka oli jo auki tunnelin noustessa. Tämä yksi ero selittää useimmat raportit „työkalu kutsuu yhä julkista päätepistettä“. Asetuksen sijoittamiseen on kaksi toimivaa paikkaa, ja valinta riippuu siitä, kuka sitä kuluttaa ja kuinka usein se muuttuu. Vertaa niitä ennen kuin lisäät vielä yhden käynnistyskomentosarjan.
Kaksi paikkaa, joissa asetus voi elää
Ensimmäinen vaihtoehto on etuliite itse komennossa: arvo on olemassa vain sitä yhtä kutsua varten ja katoaa sen mukana. Toinen vaihtoehto on vienti yhteyden koukun sisällä, ja se tavoittaa jokaisen prosessin, jonka koukku käynnistää sen jälkeen. Ne eroavat ulottuvuudessa ja eliniässä, eivät syntaksissa, ja tämä ero ratkaisee useimmat epäonnistumiset.
| Property | Prefix on the command | Export from the hook |
|---|---|---|
| Who receives it | That invocation only | Children the hook starts |
| Lifetime | Until the process exits | Until the hook's own session ends |
| Leakage | Scoped to one command | Applies to later commands in that session |
| Repeat cost | Every invocation | Once per connection |
| Works for an open editor | No, unless the editor is started with it | No |
Taulukko saa koukun näyttämään halvalta ja kätkee todellisen laskun: se valitsee yksityisen päätepisteen myös komennoille, joilla ei ole tehtävän kanssa mitään tekemistä. Lue jokainen rivi rajoituksena, älä mieltymyksenä. Jos päätepiste vaihtuu tehtäväkohtaisesti, etuliite voittaa tarkkuudessa, vaikka maksaisi yhden näppäinpainalluksen.
Miksi koukku ei tavoita jo avattua kuorta
Ympäristömuuttujat annetaan prosessille, kun prosessikuva luodaan. Ennen yhteyttä käynnistynyt kuori säilyttää saamansa kopion, eikä koukun sisällä suoritettu vienti ole lähetys jokaiselle koneen prosessille. Vain koukun omat lapset perivät sen. Kuoren omat lapset ottavat sen, mitä kuori pitää hallussaan niiden käynnistyessä, ja siksi sama komento voi toimia yhdessä päätteessä ja epäonnistua toisessa.
Sama koskee graafista editoria. Sen laajennusisäntä, integroitu pääte ja taustalla toimiva kielipalvelin haarautuivat käynnistyksessä ja pitävät omia kopioitaan. Kansion uudelleenavaaminen ei välttämättä käynnistä näitä lapsia uudelleen, joten lisäämäsi asetus ei silti koskaan saavu perille.
Halvin testi on tulostaa muuttuja paikasta, joka epäonnistuu, ei kuoresta, joka toimii. Jos epäonnistuva prosessi käynnistyi ennen tunnelia, viennillä ei ollut mitään mahdollisuutta.
Komentokohtainen muoto, kirjoitettuna auki
Etuliite pitää valinnan näkyvissä komennossa, joka sitä käyttää, mikä auttaa, kun päätepiste vaihtuu tehtävien välillä:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
Komento on havainnollistava: my-work-tool on paikkamerkki eikä INTERNAL_API ole VPN-standardi, joten korvaa se sen ohjelman dokumentoidulla asetuksella, jota todella ajat, ja omalla hyväksytyllä isännälläsi. Älä laita tunnusta tai salasanaa samalle riville, koska se päätyy kuoren historiaan.
Kun useat komennot kuuluvat yhteen tehtävään, lyhyt tarkistettu käärekomentosarja asettaa muuttujat ja käynnistää ne sitten. Näin säilyy yksi määritelmä tekemättä arvosta globaalia jokaiselle tulevalle komennolle päätteessä.
Lataa uudelleen, käynnistä uudelleen tai jätä rauhaan
Jos työkalu on jo käynnissä, suosi sen omaa uudelleenlatausta tai työtilaprofiilia, jos sellainen on. Muussa tapauksessa tallenna työ ja käynnistä uudelleen komponentti, joka lukee asetuksen, ja se on usein kielipalvelin eikä editorin ikkuna. Ikkunan uudelleenkäynnistys ja oletus, että lapsiprosessit seurasivat mukana, on juuri se syy, miksi uudelleenlataus näyttää siltä, ettei se toimi.
Yhteyden katkaisu on erillinen päätös. Tauottaminen, sulkeminen tai uudelleenyhdistäminen kuuluu sovellukselle, eikä päätepisteen muuttuja säädä sitä. Käsittele muuttujaa asetuksena, joka valitsee osoitteen, älä sääntönä siitä, mitä verkkoliikennettä saa sen jälkeen käyttää, ja nämä kaksi asiaa pysyvät erotettavina.