Korporativ VPN proxy arxasında 407: npm, Maven və VS Code
407 proxy-nin etimad məlumatı istədiyini göstərir, registry-nin söndüyünü yox. npm, Maven, VS Code və konteynerləri konfiqurasiya edin, daxili hostları istisna edin.
Brauzerdə açılan daxili səhifə proxy-nin yalnız brauzer üçün işlədiyini sübut edir, npm və ya Maven üçün yox. Hər müştəri öz konfiqurasiyasını oxuyur və yalnız VPN ilə əlçatan şəbəkə ikinci sual doğurur: müştəri proxy-yə ümumiyyətlə çata bilirmi. Status kodu ilə başlayın, sonra uğursuz olan alətin konfiqurasiya zəncirini izləyin. Buna görə bir müştəri işləyir, qonşusu isə uğursuz olur.
407 kodunun həqiqətən sübut etdiyi şey
407 Proxy Authentication Required cavabı registry-dən və ya repozitoridən deyil, proxy-dən gəlir. Müştəri proxy-yə çatdı və proxy sorğunu rədd etdi, adətən etimad məlumatları çatışmadığı, səhv formatlandığı və ya həmin hədəf üçün qəbul edilmədiyi üçün.
Timeout başqa bir şey danışır. Müştərinin proxy ünvanı səhv ola bilər, tunel qurulmadan proxy-yə marşrutu olmaya bilər və ya daxili host üçün bypass qeydi çatışmaya bilər. Etimad məlumatlarını dəyişməzdən əvvəl xəta mətnini oxuyun.
Proxy hostunu, portu, autentifikasiya sxemini və istifadəçi adının domen prefiksi tələb edib-etmədiyini təsdiqləyin. Sonra uğursuz alətin dəyəri fayldan, mühit dəyişənindən yoxsa hər ikisindən oxuduğunu yoxlayın. Domenlə işarələnmiş istifadəçi adı 407 üçün tez-tez səbəb olur. Səhv kodlaşdırma ilə saxlanmış parol da belədir.
npm öz konfiqurasiya zəncirini oxuyur
npm istifadəçi və ya layihə .npmrc faylında proxy və https-proxy açarlarını qəbul edir. Sxemi göstərin, çünki dəyərlər URL-dir, parolda rezerv edilmiş simvolları URL kodlaşdırması ilə yazın ki, at işarəsi dəyəri bölməsin.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true
npm config list ilə hansı faylın hansı effektiv dəyəri verdiyini görürsünüz. npm_config_proxy kimi shell export faylı üstələyə bilər və şəxsi parol olan layihə səviyyəli .npmrc heç vaxt commit edilməməlidir. Mənbə yolunu dəyərlə birlikdə çap edin.
strict-ssl aktiv qalsın. TLS-i yoxlayan proxy truststore-da korporativ CA tələb edə bilər; xətanı keçmək üçün yoxlamanı söndürmək əsl etimad problemini gizlədir.
Maven proxy-ləri mirror-lardan ayırır
Maven proxy-ləri və mirror-ları layihə pom-undan deyil, istifadəçi settings faylından oxuyur. Şəbəkəyə xas proxy-ləri və daxili repo mirror-larını ~/.m2/settings.xml faylına qoyun, açıq repo bəyanatlarını isə layihədə saxlayın.
Proxy bloku id, aktiv bayrağı, protokol, host və port, həmçinin daxili repo üçün nonProxyHosts qeydi tələb edir. Bu sahələri layihə pom-unda deyil, istifadəçi settings faylında saxlayın ki, şəbəkə dəyişikliyi bütün komandanın build-ini yenidən yazmasın. Mirror qeydi ayrıdır və Maven-i daxili repo-ya yönəldir.
Daxili repo-nu nonProxyHosts siyahısına əlavə edin ki, Maven ona birbaşa qoşulsun. Bu qeyd olmadan proxy lazımsız bir dayanacağa çevrilir və nasazlıq repo kəsintisi kimi görünür. Mirror qeydi daxili repo-ya işarə edir; proxy parametrini əvəz etmir.
Şəbəkələr arasında keçən developer-lər hər şəbəkə üçün bir settings faylı saxlayıb shell açılarkən düzgün nüsxəni seçə bilər. Hər keçiddə bir faylı əl ilə redaktə etmək işləyən noutbuku dəstək biletinə çevirir.
VS Code və dev konteynerlərin ad məkanları ayrıdır
VS Code http.proxy parametrini istifadəçi və ya workspace parametrlərindən oxuyur, sxem və port daxil olmaqla. Bu, redaktorun öz genişləndirmə və marketplace sorğularını əhatə edir, lakin terminalı və ya redaktordan başladılan konteyneri avtomatik konfiqurasiya etmir. Parametrin sahəsini də dəyər kimi yoxlayın. Workspace parametri bir layihə üçün istifadəçi parametrini üstələyə bilər.
Dev konteynerin öz şəbəkə ad məkanı var. O, host-un proxy dəyişənlərini və VPN marşrutunu miras almır, buna görə konteynerdə marketplace çağırışı uğursuz ola bilər, halbuki host-da eyni çağırış işləyir.
Konteynerə həmin dəyişənləri verin və ya ona öz resolver və marşrutunu verin. Adlar orada həll olunur, amma proxy heç cavab vermirsə, çatışmayan hissə adətən ünvandır deyil, yoldur.
Bypass siyahıları və mühitin üstünlüyü
VPN şlüzünü, daxili registry-ləri və şəxsi DNS şəbəkə uzantılarını bypass siyahısına əlavə edin. Müştəri tunel qurulmadan VPN şlüzünə proxy vasitəsilə çatmağa çalışırsa, bağlantı proxy kəsintisi kimi görünən şəkildə uğursuz olur. Bu bypass-ı tunel söndürülmüş halda sınayın.
Mühit dəyişənləri ilə fayllar ziddiyyət təşkil edə bilər. Shell-in deyil, alətin öz konfiqurasiya çıxışını işlədin və bildirdiyi dəyərləri müqayisə edin. Kiçik hərfli təkrarlanan dəyişən, valideyn shell-də köhnə dəyər və ya layihə faylı yenicə dəyişdiyiniz parametri üstələyə bilər.
CI-da proxy-ni gizli dəyişən kimi ötürün və eyni image-da bir paket quraşdırmasını sınayın. Konteynerdə 407 çox vaxt dəyişənin orada sadəcə olmadığını göstərir, halbuki host shell-də var.
Hər alət üçün proxy hostunu, portu, bypass uzantılarını və onları verən fayl və ya dəyişəni qeyd edin. Bir müştəri 407 qaytaranda, digəri işləyəndə bu qeyd dörd fərqli konfiqurasiyanın müqayisəsini qısa yoxlamaya çevirir.