Բրաուզերում ներքին էջի բացվելը ապացուցում է միայն, որ պրոքսին աշխատում է բրաուզերի համար, ոչ npm-ի կամ Maven-ի համար։ Յուրաքանչյուր կլիենտ կարդում է իր սեփական կոնֆիգուրացիան, և միայն VPN-ով հասանելի ցանցը ավելացնում է երկրորդ հարցը՝ հասնում է արդյոք կլիենտը պրոքսիին ընդհանրապես։ Սկսեք կարգավիճակի կոդից, ապա հետևեք ձախողված գործիքի կոնֆիգուրացիայի շղթային։

Ինչ է իրականում ապացուցում 407-ը

407 Proxy Authentication Required-ը գալիս է պրոքսիից, ոչ գրանցամատյանից կամ պահոցից։ Կլիենտը հասել է պրոքսիին, և պրոքսին մերժել է հարցումը, սովորաբար որովհետև վավերականության տվյալները բացակայել են, սխալ ձևավորված են եղել կամ չեն ընդունվել այդ նպատակակետի համար։

Ժամանակի սպառումը այլ բան է պատմում՝ սխալ պրոքսի հասցե, պրոքսիին երթուղի չկա մինչև թունելի բարձրանալը, կամ ներքին հոսթի համար շրջանցման գրառում է բացակայում։ Կարդացեք սխալի տեքստը նախքան տվյալները փոխելը։

Ստուգեք պրոքսիի հոսթը, պորտը, նույնականացման սխեման և արդյոք օգտանունը պահանջում է դոմենի նախածանց։ Ապա ստուգեք՝ գործիքը արժեքը կարդում է ֆայլից, միջավայրի փոփոխականից թե երկուսից։ Դոմենով օգտանունը 407-ի հաճախ հանդիպող պատճառ է, ինչպես և սխալ կոդավորմամբ պահված գաղտնաբառը։

npm-ը կարդում է իր կոնֆիգուրացիայի շղթան

npm-ը ընդունում է proxy և https-proxy բանալիները օգտվողի կամ նախագծի .npmrc-ում։ Նշեք սխեման, որովհետև արժեքները URL են, և կոդավորեք գաղտնաբառի վերապահված նշանները, որպեսզի at նշանը չբաժանի արժեքը։

proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true

npm config list-ով տեսնում եք, թե որ ֆայլը տվեց յուրաքանչյուր արդյունավետ արժեք։ Shell export-ը, ինչպես npm_config_proxy-ը, կարող է վերագրել ֆայլին, և անձնական գաղտնաբառով նախագծի .npmrc-ը երբեք չպետք է commit արվի։ Տպեք աղբյուրի ուղին արժեքի հետ միասին։

Թողեք strict-ssl-ը միացված։ TLS-ը ստուգող պրոքսին կարող է պահանջել կորպորատիվ CA-ն վստահության պահոցում; ստուգումն անջատելը սխալը շրջանցելու համար թաքցնում է վստահության իրական խնդիրը։

Maven-ը առանձնացնում է պրոքսիները հայելիներից

Maven-ը պրոքսիներն ու հայելիները կարդում է օգտվողի կարգավորումների ֆայլից, ոչ նախագծի pom-ից։ Ցանցային պրոքսիները և ներքին պահոցի հայելիները դրեք ~/.m2/settings.xml-ում, իսկ հանրային պահոցի հայտարարությունները թողեք նախագծում։

Պրոքսիի բլոկին անհրաժեշտ են id, ակտիվության դրոշ, արձանագրություն, հոսթ և պորտ, ինչպես նաև nonProxyHosts գրառում ներքին պահոցի համար։ Պահեք այդ դաշտերը օգտվողի ֆայլում, ոչ pom-ում, որպեսզի ցանցի փոփոխությունը չվերագրի ամբողջ թիմի build-ը։

Ավելացրեք ներքին պահոցը nonProxyHosts-ին, որպեսզի Maven-ը միանա ուղղակիորեն։ Առանց այդ գրառման պրոքսին դառնում է ավելորդ կանգառ, և ձախողումը նմանվում է պահոցի ընդհատման։ Հայելու գրառումը մատնանշում է ներքին պահոցը և չի փոխարինում պրոքսիի կարգավորումը։

Ցանցերի միջև տեղաշարժվող մշակողները կարող են պահել մեկ կարգավորումների ֆայլ յուրաքանչյուր ցանցի համար և shell-ի մեկնարկին ընտրել ճիշտ պատճենը։ Մեկ ֆայլ ձեռքով խմբագրելը յուրաքանչյուր անցման ժամանակ աշխատող նոութբուքը դարձնում է աջակցության տոմս։

VS Code-ը և dev կոնտեյներներն ունեն տարբեր անվանատարածքներ

VS Code-ը http.proxy-ը կարդում է օգտվողի կամ աշխատանքային տարածքի կարգավորումներից՝ ներառյալ սխեման և պորտը։ Դա ծածկում է խմբագրի հարցումները ընդլայնումներին և շուկային, բայց չի կարգավորում տերմինալ կամ խմբագրից գործարկված կոնտեյներ։ Ստուգեք կարգավորման շրջանակը և արժեքը։ Աշխատանքային տարածքի կարգավորումը կարող է վերագրել օգտվողի կարգավորումը մեկ նախագծի համար։

dev կոնտեյներն ունի իր ցանցային անվանատարածքը։ Այն չի ժառանգում հոսթի պրոքսի փոփոխականները կամ VPN երթուղին, ուստի շուկայի կանչը կարող է ձախողվել կոնտեյների ներսում, մինչ նույն կանչը աշխատում է հոսթի վրա։

Տվեք կոնտեյներին այդ փոփոխականները կամ սեփական resolver և երթուղի։ Երբ անունները ներսում լուծվում են, բայց պրոքսին երբեք չի պատասխանում, բացակայող մասը սովորաբար երթուղին է, ոչ հասցեն։

Շրջանցման ցանկեր և միջավայրի առաջնահերթություն

Ավելացրեք VPN դարպասը, ներքին գրանցամատյանները և մասնավոր DNS վերջածանցները շրջանցման ցանկին։ Եթե կլիենտը փորձում է դարպասին հասնել պրոքսիի միջոցով մինչև թունելի գոյությունը, կապը ձախողվում է այնպես, որ նմանվում է պրոքսիի անջատման։ Փորձեք այդ շրջանցումը թունելն իջեցրած։

Միջավայրի փոփոխականները և ֆայլերը կարող են հակասել։ Գործարկեք գործիքի սեփական կարգավորումների dump-ը, ոչ shell-ինը, և համեմատեք արժեքները։ Կրկնված փոփոխական փոքրատառերով, հին արժեք ծնող shell-ում կամ նախագծի ֆայլ կարող են գերազանցել հենց նոր փոփոխած կարգավորումը։

CI-ում փոխանցեք պրոքսին որպես գաղտնի փոփոխական և փորձեք մեկ փաթեթի տեղադրում նույն image-ում։ Կոնտեյների ներսում 407-ը հաճախ նշանակում է, որ փոփոխականը այնտեղ պարզապես բացակայում է, մինչ հոսթի shell-ում այն կա։

Գրանցեք պրոքսիի հոսթը, պորտը, շրջանցման վերջածանցները և դրանք տվող ֆայլը կամ փոփոխականը յուրաքանչյուր գործիքի համար։ Երբ մեկ կլիենտ վերադարձնում է 407, իսկ մյուսը աշխատում է, այդ գրառումը չորս տարբեր կոնֆիգուրացիաների համեմատությունը դարձնում է կարճ ստուգում։

Առնչվող հոդվածներ