407 di sebalik proksi VPN korporat: npm, Maven dan VS Code
407 bermaksud proksi mahukan kelayakan, bukan daftar sudah mati. Konfigurasikan npm, Maven, VS Code dan kontena, serta kecualikan hos dalaman.
Halaman intranet yang terbuka dalam pelayar hanya membuktikan proksi berfungsi untuk pelayar, bukan untuk npm atau Maven. Setiap klien membaca konfigurasinya sendiri, dan rangkaian yang hanya boleh dicapai melalui VPN menambah soalan kedua: sama ada klien sampai ke proksi. Mulakan dengan kod status, kemudian ikut rantaian konfigurasi alat yang gagal. Sebab itu satu klien berfungsi manakala jirannya tidak.
Apa yang sebenarnya dibuktikan 407
407 Proxy Authentication Required datang daripada proksi, bukan daripada daftar atau repositori. Klien sampai ke proksi dan proksi menolak permintaan itu, biasanya kerana kelayakan tiada, salah format atau tidak diterima untuk destinasi tersebut.
Tamat masa menceritakan kisah lain: alamat proksi salah, tiada laluan ke proksi sebelum terowong naik, atau entri pintasan hilang untuk hos dalaman. Baca teks ralat sebelum menukar kelayakan.
Sahkan hos, port, skema pengesahan dan sama ada nama pengguna memerlukan awalan domain. Kemudian periksa sama ada alat itu membaca nilai daripada fail, pemboleh ubah persekitaran atau kedua-duanya. Nama dengan domain ialah punca 407 yang lazim, begitu juga kata laluan yang disimpan dengan pengekodan salah.
npm membaca rantaian konfigurasinya sendiri
npm menerima kunci proxy dan https-proxy dalam .npmrc pengguna atau projek. Sertakan skema, kerana nilainya URL, dan kodkan aksara terpelihara dalam kata laluan supaya tanda at tidak memecahkan nilai.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
strict-ssl=true
Dengan npm config list anda melihat fail mana yang memberikan setiap nilai berkesan. Eksport shell seperti npm_config_proxy boleh mengatasi fail itu, dan .npmrc peringkat projek dengan kata laluan peribadi tidak sekali-kali patut di-commit. Cetak laluan sumber bersama nilainya.
Biarkan strict-ssl dihidupkan. Proksi yang memeriksa TLS mungkin memerlukan CA korporat dalam stor kepercayaan; mematikan pengesahan untuk melepasi ralat menyembunyikan masalah kepercayaan sebenar.
Maven mengasingkan proksi daripada cermin
Maven membaca proksi dan cermin daripada fail tetapan pengguna, bukan daripada pom projek. Letakkan proksi khusus rangkaian dan cermin repositori dalaman dalam ~/.m2/settings.xml, dan biarkan pengisytiharan repositori awam dalam projek.
Blok proksi memerlukan id, bendera aktif, protokol, hos dan port, serta entri nonProxyHosts untuk repositori dalaman. Simpan medan itu dalam fail pengguna, bukan dalam pom, supaya perubahan rangkaian tidak menulis semula build seluruh pasukan.
Tambah repositori dalaman ke nonProxyHosts supaya Maven bersambung terus. Tanpa entri itu proksi menjadi persinggahan yang tidak perlu dan kegagalan kelihatan seperti repositori terputus. Entri cermin menunjuk ke repositori dalaman dan tidak menggantikan tetapan proksi.
Pembangun yang berpindah antara rangkaian boleh menyimpan satu fail tetapan bagi setiap rangkaian dan memilih salinan yang betul apabila shell bermula. Menyunting satu fail dengan tangan pada setiap peralihan menjadikan komputer riba yang berfungsi sebagai tiket sokongan.
VS Code dan kontena dev mempunyai ruang nama berbeza
VS Code membaca http.proxy daripada tetapan pengguna atau ruang kerja, termasuk skema dan port. Itu meliputi permintaan sambungan dan pasar editor, tetapi tidak mengkonfigurasi terminal atau kontena yang dilancarkan daripada editor. Periksa skop tetapan dan nilainya. Tetapan ruang kerja boleh mengatasi tetapan pengguna untuk satu projek.
Kontena dev mempunyai ruang nama rangkaiannya sendiri. Ia tidak mewarisi pemboleh ubah proksi hos atau laluan VPN hos, sebab itu panggilan pasar boleh gagal dalam kontena manakala panggilan yang sama berfungsi pada hos.
Berikan pemboleh ubah itu kepada kontena, atau berikan penyelesai dan laluannya sendiri. Apabila nama diselesaikan di dalam tetapi proksi tidak pernah menjawab, bahagian yang hilang biasanya laluan, bukan alamat.
Senarai pintasan dan keutamaan persekitaran
Tambah gerbang VPN, daftar dalaman dan akhiran DNS peribadi ke senarai pintasan. Jika klien cuba mencapai gerbang melalui proksi sebelum terowong wujud, sambungan gagal sehingga kelihatan seperti proksi terputus. Uji perkara itu dengan terowong diturunkan.
Pemboleh ubah persekitaran dan fail boleh bercanggah. Jalankan dump konfigurasi alat itu sendiri, bukan shell, dan bandingkan nilainya. Pemboleh ubah berganda huruf kecil, nilai lama dalam shell induk atau fail projek boleh mengatasi tetapan yang baru anda ubah.
Dalam CI hantar proksi sebagai pemboleh ubah rahsia dan uji pemasangan satu pakej dalam image yang sama. 407 dalam kontena selalunya bermakna pemboleh ubah itu memang tiada di sana, sedangkan shell hos memilikinya.
Catat hos dan port proksi, akhiran pintasan serta fail atau pemboleh ubah yang memberikannya untuk setiap alat. Apabila satu klien mengembalikan 407 dan yang lain berfungsi, catatan itu menukar perbandingan empat konfigurasi berbeza menjadi pemeriksaan singkat.