Trang nội bộ mở được trên trình duyệt chỉ chứng minh proxy hoạt động với trình duyệt, không phải với npm hay Maven. Mỗi ứng dụng đọc cấu hình riêng, và một mạng chỉ tới được qua VPN thêm câu hỏi thứ hai: ứng dụng có tới được proxy hay không. Hãy bắt đầu từ mã trạng thái rồi lần theo chuỗi cấu hình của công cụ đã lỗi. Vì thế một ứng dụng chạy được còn ứng dụng bên cạnh thì không.

407 thực sự chứng minh điều gì

407 Proxy Authentication Required đến từ proxy, không phải từ registry hay kho lưu trữ. Ứng dụng đã tới proxy và proxy từ chối yêu cầu, thường vì thiếu thông tin đăng nhập, sai định dạng hoặc không được chấp nhận cho đích đó.

Hết thời gian chờ lại kể chuyện khác: sai địa chỉ proxy, không có đường tới proxy trước khi đường hầm dựng lên, hoặc thiếu mục bỏ qua cho một máy chủ nội bộ. Hãy đọc nội dung lỗi trước khi đổi thông tin đăng nhập.

Kiểm tra máy chủ, cổng, cách xác thực và tên người dùng có cần tiền tố miền hay không. Sau đó xem công cụ đọc giá trị từ tệp, từ biến môi trường hay cả hai. Tên có miền là nguyên nhân phổ biến của 407, cũng như mật khẩu lưu với bảng mã sai.

npm đọc chuỗi cấu hình của chính nó

npm nhận các khóa proxy và https-proxy trong .npmrc của người dùng hoặc dự án. Hãy ghi lược đồ vì giá trị là URL, và mã hóa các ký tự dành riêng trong mật khẩu để dấu at không chia cắt giá trị.

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

Với npm config list bạn thấy tệp nào cung cấp từng giá trị hiệu lực. Một lệnh export của shell như npm_config_proxy có thể ghi đè tệp, và tệp .npmrc cấp dự án chứa mật khẩu cá nhân thì không bao giờ nên commit. In cả đường dẫn nguồn lẫn giá trị.

Giữ strict-ssl bật. Proxy có kiểm tra TLS có thể đòi CA của công ty trong kho tin cậy; tắt xác minh để lách lỗi chỉ che đi vấn đề tin cậy thật.

Maven tách proxy khỏi mirror

Maven đọc proxy và mirror từ tệp settings của người dùng, không phải từ pom của dự án. Đặt proxy theo mạng và mirror của kho nội bộ trong ~/.m2/settings.xml, còn khai báo kho công khai để trong dự án.

Khối proxy cần id, cờ kích hoạt, giao thức, máy chủ và cổng, cùng mục nonProxyHosts cho kho nội bộ. Giữ các trường này trong tệp người dùng chứ không phải pom, để thay đổi mạng không viết lại bản dựng của cả nhóm.

Thêm kho nội bộ vào nonProxyHosts để Maven kết nối trực tiếp. Không có mục đó, proxy thành một chặng thừa và lỗi trông như kho bị gián đoạn. Mục mirror trỏ tới kho nội bộ và không thay thế thiết lập proxy.

Người hay đổi mạng có thể giữ một tệp settings cho mỗi mạng và chọn bản đúng khi shell khởi động. Sửa tay một tệp mỗi lần chuyển chỉ biến một máy tính chạy được thành phiếu hỗ trợ.

VS Code và container dev có không gian tên khác nhau

VS Code đọc http.proxy từ cài đặt người dùng hoặc không gian làm việc, gồm cả lược đồ và cổng. Điều đó bao các yêu cầu của trình soạn thảo tới tiện ích và marketplace, nhưng không tự cấu hình terminal hay container khởi chạy từ trình soạn thảo. Hãy xem cả phạm vi của cài đặt lẫn giá trị. Cài đặt không gian làm việc có thể đè cài đặt người dùng cho một dự án.

Container dev có không gian tên mạng riêng. Nó không thừa hưởng biến proxy hay tuyến VPN của máy chủ, nên lệnh gọi marketplace trong container có thể lỗi trong khi cùng lệnh đó chạy được trên máy chủ.

Hãy cấp cho container những biến đó, hoặc cấp resolver và tuyến riêng. Khi tên phân giải được bên trong nhưng proxy không bao giờ trả lời, phần thiếu thường là tuyến chứ không phải địa chỉ.

Danh sách bỏ qua và thứ tự ưu tiên của môi trường

Thêm cổng VPN, registry nội bộ và hậu tố DNS riêng vào danh sách bỏ qua. Nếu ứng dụng cố tới cổng qua proxy trước khi đường hầm tồn tại, kết nối lỗi theo kiểu trông như proxy sập. Hãy thử điều đó khi đường hầm đã hạ.

Biến môi trường và tệp có thể mâu thuẫn. Chạy bản kết xuất cấu hình của chính công cụ, không phải của shell, rồi so các giá trị. Một biến trùng viết thường, giá trị cũ trong shell cha hay tệp dự án đều có thể lấn át cài đặt vừa sửa.

Trong CI, truyền proxy dưới dạng biến bí mật và thử cài một gói trong cùng image. 407 trong container thường nghĩa là biến không hề có ở đó, trong khi shell của máy chủ thì có.

Ghi lại máy chủ, cổng, hậu tố bỏ qua và tệp hay biến cung cấp chúng cho từng công cụ. Khi một ứng dụng trả 407 còn ứng dụng kia chạy được, ghi chú đó biến việc so bốn cấu hình khác nhau thành một lần kiểm tra ngắn.

Bài viết liên quan