Ngiêm cấm sử đụng PROXY và VPS vào mục đích trái pháp luật bạn sẽ phải chịu toàn bộ trách nhiệm trước pháp luật khi sử dụng dịch vụ của chúng tôi tks!
vcpkg proxy: HTTPS_PROXY, proxy Windows, git và asset cache

vcpkg proxy: HTTPS_PROXY, proxy Windows, git và asset cache

Chuyên viên Kỹ thuật ProxyVN 08-18-2026 Đang tính... phút đọc

vcpkg proxy là cách để trình quản lý thư viện C và C++ vcpkg tải công cụ, mã nguồn thư viện và gói đã build qua máy chủ proxy. vcpkg có nhiều đường tải khác nhau: tải tệp bằng chính vcpkg, lấy registry bằng git, tải trong lúc build bằng CMake, và đọc ghi bộ nhớ đệm. ProxyVN đọc tài liệu Microsoft Learn và mã nguồn vcpkg-tool, chạy thử các dạng biến HTTPS_PROXY qua proxy có nhật ký để chỉ ra đường nào đọc proxy từ đâu.

vcpkg proxy: tác vụ cụ thể và ranh giới với bài đã có

vcpkg tải những gì

Khi chạy vcpkg install trong chế độ manifest, công cụ đọc tệp vcpkg.json và xác định phiên bản từng thư viện theo baseline của registry. Với mỗi thư viện chưa có trong bộ nhớ đệm, vcpkg tải mã nguồn rồi build. Mã nguồn thường là tệp nén từ GitHub hay trang của dự án. Lần chạy đầu vcpkg còn tải công cụ như CMake, Ninja, 7-Zip nếu máy chưa có bản phù hợp.

Registry mặc định là kho git microsoft/vcpkg. Registry riêng của công ty cũng là kho git hoặc thư mục. Lấy thông tin registry đi bằng git. Tải mã nguồn và công cụ đi bằng thư viện tải của vcpkg. Một số port còn tải thêm trong lúc build, qua CMake hoặc script của dự án.

Mỗi đường đọc proxy theo cách riêng, nên một lệnh vcpkg install có thể vừa đi proxy vừa đi thẳng.

Ranh giới với các bài khác

Bài git proxy nói về proxy của git nói chung. Bài proxy Docker nói về proxy khi build image. Bài này chỉ nói về vcpkg: biến môi trường mà vcpkg đọc, cách vcpkg tự nhận proxy của Windows, biến nào được truyền xuống lúc build, và cách bộ nhớ đệm tài sản giảm phụ thuộc vào proxy.

Phạm vi kiểm thử

Máy lab không cài vcpkg. Bài đọc trang biến môi trường của vcpkg trên Microsoft Learn, cập nhật ngày 21/10/2026, cùng mã nguồn vcpkg-tool nhánh main ngày 29/10/2026: src/vcpkg/base/downloads.cpp, src/vcpkg/base/system.proxy.cpp, src/vcpkg/base/system.process.cpp và tệp thông báo locales/messages.json. Lab chạy curl.exe 8.13.0 có sẵn trong Windows 10, cùng thư viện libcurl mà vcpkg dùng để tải, qua proxy HTTP tự dựng có tài khoản user1, mật khẩu p@ss#2026, để kiểm các dạng biến HTTPS_PROXY.

Đường tải dependency của vcpkg proxy: git, binary cache, asset download

Bốn đường tải của vcpkg

Bốn đường tải của vcpkg

Thư viện tải của vcpkg

Tệp downloads.cpp dùng libcurl để tải. Mã đặt một số tùy chọn đáng chú ý. Tùy chọn CURLOPT_HEADEROPT được đặt để không gửi tiêu đề của request tới proxy trong bước CONNECT, chú thích trong mã ghi điều này cố ý làm hỏng với libcurl quá cũ. Biến CURL_CA_BUNDLE, nếu có, được dùng làm tệp chứng chỉ gốc. Biến VCPKG_SSL_REVOKE_BEST_EFFORT bằng 1 bật chế độ kiểm thu hồi chứng chỉ ở mức cố gắng, chú thích ghi là để sửa lỗi Schannel thiếu danh sách thu hồi khi đi qua proxy.

Mã không tự đặt địa chỉ proxy cho libcurl, nên libcurl đọc biến môi trường như thường lệ: http_proxy cho URL http, https_proxy hoặc HTTPS_PROXY cho URL https, no_proxy cho danh sách bỏ qua.

Proxy của Windows

Tệp system.proxy.cpp có hàm đọc cài đặt proxy của người dùng qua WinHttpGetIEProxyConfigForCurrentUser, lấy địa chỉ proxy và danh sách bỏ qua. Thông báo DownloadFailedProxySettings trong messages.json nói rõ trên Windows, vcpkg tự dùng cài đặt proxy IE do phần mềm proxy đặt, kèm liên kết tới pull request số 77 của vcpkg-tool. Nói cách khác, máy Windows có proxy trong Settings thì vcpkg thường không cần biến môi trường.

Thông báo này cũng ghi giá trị do phần mềm proxy đặt có thể sai, hoặc mắc cùng lỗi tiền tố https:// ở phần dưới. Cần kiểm cả cài đặt Windows khi vcpkg tải lỗi.

Git cho registry

Lệnh vcpkg cần lấy thông tin phiên bản từ registry git thì gọi git. Git đọc cấu hình http.proxy của chính nó và biến môi trường. Bài git proxy có cách đặt. Lỗi ở bước này thường hiện thành thông báo không fetch được baseline hay commit của registry.

Biến được truyền xuống lúc build

Trên Windows, vcpkg build port trong một môi trường sạch, chỉ giữ một danh sách biến. Mã system.process.cpp giữ http_proxy, https_proxy và no_proxy, với chú thích là để truyền thông tin proxy cho curl bên trong cmake.exe. Port nào tải thêm trong lúc build bằng file(DOWNLOAD) của CMake sẽ đọc được proxy từ ba biến này.

Biến khác không có trong danh sách sẽ bị bỏ. Muốn truyền thêm biến, trang biến môi trường có VCPKG_KEEP_ENV_VARS, danh sách tên biến cách nhau bằng dấu chấm phẩy.

Chuẩn bị phiên bản, tài khoản và môi trường kiểm thử vcpkg proxy

Ghi phiên bản

Chạy vcpkg version để lấy phiên bản vcpkg-tool, git -C <thư mục vcpkg> log -1 để lấy commit của kho port. Hành vi tải thuộc về vcpkg-tool, còn danh sách port và phiên bản thư viện thuộc về kho port. Ghi cả hai.

Project manifest thử nghiệm

Dựng một thư mục nhỏ chỉ có vcpkg.json với một thư viện nhẹ, đủ để kiểm đường tải mà không mất thời gian build:

{
  "name": "lab-proxy",
  "version": "0.1.0",
  "dependencies": [ "fmt" ],
  "builtin-baseline": "<commit-cua-kho-vcpkg>"
}

Chạy vcpkg install trong thư mục này. Lần đầu sẽ tải mã nguồn fmt và có thể tải công cụ. Lần sau, nếu bộ nhớ đệm nhị phân có sẵn gói fmt, vcpkg không tải gì từ mạng. Hai lần chạy cho hai kết quả khác nhau trong nhật ký proxy, là cách kiểm bộ nhớ đệm có hoạt động.

Tài khoản proxy

Chuẩn bị URL proxy http://user:mật_khẩu@host:port, mật khẩu mã hóa phần trăm. Với máy build dùng chung, proxy xác thực bằng IP tránh được mật khẩu trong biến môi trường. Bài xác thực proxy bằng IP whitelist hay user password so sánh hai cách.

Cấu hình tối thiểu cho vcpkg proxy và phạm vi từng thiết lập

Biến môi trường

Trên Windows PowerShell:

$env:HTTP_PROXY  = 'http://user1:p%40ss%232026@203.0.113.10:8080'
$env:HTTPS_PROXY = 'http://user1:p%40ss%232026@203.0.113.10:8080'
$env:NO_PROXY    = 'localhost,127.0.0.1,.noi-bo.vn'
vcpkg install

Trên Linux và macOS dùng export với tên viết thường, vì libcurl chỉ đọc http_proxy viết thường cho URL http. Trên Windows tên biến không phân biệt hoa thường, nên HTTP_PROXY và http_proxy là một biến. Danh sách bỏ qua dùng cú pháp của curl, như bài No_proxy là gì giải thích.

Cả hai biến đều bắt đầu bằng http://

Tiền tố https sai làm tải treo

Tiền tố https sai làm tải treo

Thông báo lỗi của vcpkg ghi nguyên nhân thứ nhất là đặt HTTPS_PROXY thành https://địa_chỉ:cổng trong khi proxy là proxy HTTP. Tiền tố https:// nói rằng proxy nhận TLS, còn phần lớn proxy, kể cả phần mềm như v2ray hay shadowsocksr mà thông báo nêu tên, chỉ là proxy HTTP. Thông báo khuyên đặt http://địa_chỉ:cổng cho cả HTTP_PROXY lẫn HTTPS_PROXY.

Chữ https trong tên biến HTTPS_PROXY là loại request sẽ đi qua proxy, không phải giao thức của proxy. Đây là chỗ nhầm phổ biến nhất.

Tài khoản có ký tự đặc biệt

Mật khẩu proxy thường có ký tự như @, #, : hay %. Trong URL proxy, các ký tự này phải viết dạng mã hóa phần trăm: @ thành %40, # thành %23, : thành %3A, % thành %25. PowerShell có sẵn cách đổi: [uri]::EscapeDataString('p@ss#2026') trả về chuỗi đã mã hóa. Dán chuỗi này vào URL thay cho mật khẩu gốc. Phép thử ở phần lab cho thấy quên bước này làm curl đọc sai địa chỉ proxy, và vcpkg sẽ báo lỗi không phân giải được proxy.

Proxy Windows thay cho biến

Trên máy cá nhân đã có proxy trong Settings, có thể không cần biến. Máy build chạy dưới tài khoản dịch vụ thì khác: cài đặt proxy của người dùng không có ở tài khoản dịch vụ. Với máy build, đặt biến môi trường tường minh cho tiến trình build là cách ổn định hơn.

Phần mềm proxy chạy trên máy

Thông báo của vcpkg nhắc tới v2ray và shadowsocksr vì nhiều lập trình viên chạy một phần mềm proxy cục bộ, phần mềm này tự đặt proxy Windows thành 127.0.0.1 với một cổng. vcpkg đọc cài đặt đó và đi qua phần mềm cục bộ. Khi tắt phần mềm mà cài đặt Windows vẫn còn, vcpkg cố kết nối tới cổng cục bộ không còn ai nghe và báo lỗi tải.

Gặp lỗi tải sau khi vừa tắt phần mềm proxy, mở cài đặt proxy của Windows xem còn địa chỉ 127.0.0.1 không. Bài cách tắt proxy trên Windows hướng dẫn gỡ.

Git riêng

Nếu registry git cần proxy mà biến môi trường đã đủ, git sẽ đọc HTTPS_PROXY như curl. Khi muốn git đi đường khác, ví dụ registry nội bộ đi thẳng, đặt http.<url>.proxy rỗng cho URL nội bộ trong cấu hình git.

Chạy đối chứng và đọc log vcpkg proxy

Kiểm dạng biến bằng curl

Vì vcpkg tải bằng libcurl và libcurl đọc biến môi trường, chạy curl với cùng biến cho biết vcpkg sẽ hiểu biến ra sao. Lab gọi https://example.com với bốn giá trị HTTPS_PROXY:

Bảng: Kiểm dạng biến bằng curl

Giá trị HTTPS_PROXY

Kết quả curl.exe 8.13.0

Nhật ký proxy

http://user1:p%40ss%[email protected]:8971

200

CONNECT, xác thực đạt

https://user1:p%40ss%[email protected]:8971

Mã 28, hết thời gian chờ sau 10 giây

Không có dòng hợp lệ

127.0.0.1:8971

Mã 56, CONNECT tunnel failed, response 407

CONNECT không có tài khoản

http://user1:p@ss#[email protected]:8971

Mã 5, không phân giải được proxy

Trống

Dòng thứ hai đáng chú ý: tiền tố https:// sai không báo lỗi ngay mà treo tới hết thời gian chờ, vì curl cố bắt tay TLS với một proxy không nói TLS. Trong vcpkg, hiện tượng này trông như mạng chậm hay máy chủ không phản hồi, rất dễ đổ lỗi nhầm. Dòng thứ tư cho thấy mật khẩu có @ và # không mã hóa làm curl đọc sai địa chỉ proxy. Bài định dạng proxy có bảng mã hóa ký tự.

Đọc bảng theo thứ tự từ dưới lên giúp chẩn đoán nhanh. Lỗi mã 5 nghĩa là chưa tới được proxy vì địa chỉ đọc sai, sửa chuỗi URL. Lỗi mã 56 kèm 407 nghĩa là tới được proxy nhưng thiếu hoặc sai tài khoản. Lỗi mã 28 sau đúng khoảng thời gian chờ là dấu hiệu của tiền tố https:// sai hoặc proxy không phản hồi. Mã 200 nghĩa là đường đi đã thông, nếu vcpkg vẫn lỗi thì xem tới git, CMake hay bộ nhớ đệm.

Lab cũng chạy thêm một ca đặt https_proxy viết thường với giá trị đúng, kết quả 200. Trên Windows, hai cách viết là cùng một biến.

Đọc thông báo của vcpkg

Khi tải thất bại theo kiểu mà proxy có thể là nguyên nhân, mã downloads.cpp in thêm thông báo DownloadFailedProxySettings, chỉ một lần cho mỗi lỗi. Mã có logic phân loại: tải được nhưng sai mã SHA không được coi là lỗi do proxy. Thấy thông báo này nghĩa là vcpkg đã không kết nối được hoặc kết nối bị đứt, không phải tải sai tệp.

Thêm --debug vào lệnh vcpkg để xem chi tiết từng lượt tải. Kết hợp với nhật ký proxy để biết URL nào đã qua proxy. Log của --debug dài, nên chuyển ra tệp rồi tìm theo tên máy chủ trong URL báo lỗi. Thấy cùng một URL được thử lại nhiều lần nghĩa là vcpkg đang thử các nguồn dự phòng, ví dụ bộ nhớ đệm tài sản rồi tới URL gốc.

Phép thử cache hit so với request thật

Chạy vcpkg install hai lần liên tiếp trên project thử nghiệm, xóa thư mục vcpkg_installed giữa hai lần nhưng giữ bộ nhớ đệm nhị phân. Lần đầu nhật ký proxy có CONNECT tới GitHub hoặc trang của thư viện. Lần sau, nếu bộ nhớ đệm hoạt động, vcpkg khôi phục gói từ bộ nhớ đệm, nhật ký proxy không có lượt tải mã nguồn mới. Bài chưa chạy phép thử này vì máy lab không có vcpkg.

vcpkg proxy với registry riêng và công cụ tự tải

Registry riêng của công ty

Tệp vcpkg-configuration.json khai báo registry riêng, thường là kho git nội bộ chứa port của công ty, kèm baseline là một commit. vcpkg gọi git để lấy dữ liệu từ kho này. Nếu máy đặt HTTPS_PROXY trỏ ra proxy ngoài, git cũng mang lượt gọi tới kho nội bộ ra proxy ngoài, và proxy ngoài không vào được mạng nội bộ.

Có hai cách. Thêm tên máy chủ git nội bộ vào NO_PROXY để git và curl cùng đi thẳng. Hoặc đặt http.<url>.proxy rỗng trong cấu hình git cho riêng kho nội bộ. Registry kiểu thư mục, trỏ tới một ổ mạng, thì không dùng HTTP nên không liên quan proxy.

Công cụ vcpkg tự tải

Lần đầu chạy, vcpkg có thể tải CMake, Ninja, 7-Zip hay các công cụ khác theo phiên bản nó cần. Những lượt tải này đi qua thư viện tải của vcpkg như mã nguồn thư viện, nên cũng theo biến proxy. Trang biến môi trường có hai biến điều khiển hành vi này. VCPKG_FORCE_SYSTEM_BINARIES buộc dùng CMake và Ninja có sẵn trên máy, không tải. VCPKG_FORCE_DOWNLOADED_BINARIES làm ngược lại, luôn tải bản vcpkg chỉ định.

Trên máy build không ra được Internet, cài sẵn CMake và Ninja rồi đặt VCPKG_FORCE_SYSTEM_BINARIES giúp bớt một nhóm lượt tải phải đi qua proxy.

Thư mục tải dùng chung

VCPKG_DOWNLOADS đặt thư mục chứa tệp tải về thay cho thư mục downloads bên trong vcpkg, phải ghi đường dẫn đầy đủ tính từ gốc ổ đĩa. Nhiều bản vcpkg trên cùng máy có thể dùng chung thư mục này, tệp đã tải một lần không phải tải lại. Với máy build có ổ đĩa giữ lại giữa các lần chạy, thư mục tải dùng chung giảm đáng kể lưu lượng qua proxy. Kiểm bằng --debug và nhật ký proxy để chắc tệp được dùng lại.

Asset caching và binary caching với vcpkg proxy

Bộ nhớ đệm tài sản

Bộ nhớ đệm nội bộ thay proxy

Bộ nhớ đệm nội bộ thay proxy

Biến X_VCPKG_ASSET_SOURCES cho phép dùng một bản nhân bản riêng cho mọi tài sản có mã SHA512, tức mã nguồn và công cụ mà port tải. Trang biến môi trường ghi đây là tính năng thử nghiệm, có thể đổi hoặc bỏ. Khi có bản nhân bản nội bộ, máy build chỉ cần tới máy chủ nội bộ, không cần proxy ra Internet. Trang khắc phục lỗi build của vcpkg cũng gợi ý asset caching để giảm lỗi tải do URL gốc mất.

Bộ nhớ đệm nhị phân

VCPKG_BINARY_SOURCES thêm hoặc bớt nguồn gói đã build sẵn. Nguồn có thể là thư mục, máy chủ HTTP, kho NuGet hay dịch vụ lưu trữ đám mây. Mỗi loại nguồn dùng công cụ riêng để đọc ghi. Nguồn NuGet đi qua nuget.exe, có cấu hình proxy riêng trong tệp NuGet.Config. Nguồn HTTP đi qua thư viện tải của vcpkg. Đặt bộ nhớ đệm nhị phân sau proxy thì phải kiểm proxy cho đúng công cụ của loại nguồn đó.

Giảm phụ thuộc vào proxy

Với nhóm nhiều máy build, đặt bộ nhớ đệm tài sản và bộ nhớ đệm nhị phân trong mạng nội bộ giúp phần lớn lượt chạy không cần ra Internet. Chỉ máy làm nhiệm vụ làm đầy bộ nhớ đệm cần proxy. Cách này vừa nhanh hơn, vừa ít điểm lỗi hơn đặt proxy cho mọi máy.

Quy trình chẩn đoán vcpkg proxy

Từng bước một

Khi vcpkg install lỗi tải, đi theo thứ tự sau thay vì đổi nhiều thứ cùng lúc:

  • Đọc dòng lỗi đầu tiên, xác định lỗi ở bước tải công cụ, tải mã nguồn, fetch registry hay build.
  • In biến proxy hiện có bằng Get-ChildItem env:*proxy* trên PowerShell hoặc env | grep -i proxy trên Linux.
  • Chạy curl với cùng biến tới URL mà vcpkg báo lỗi, đọc mã lỗi của curl theo bảng ở phần lab.
  • Nếu không đặt biến, xem cài đặt proxy của Windows.
  • Lỗi ở registry thì chạy git ls-remote tới URL registry với cùng biến.
  • Lỗi lúc build thì đọc log của port trong thư mục buildtrees, tìm lượt tải của CMake.

Mỗi bước loại bớt một khả năng. Tới bước nào thấy lỗi thì sửa ở đó rồi chạy lại vcpkg.

Log của port

Trang khắc phục lỗi build của vcpkg nói mỗi tiến trình ngoài đều có tệp log, nằm trong thư mục buildtrees của port. Khi lỗi xảy ra, vcpkg in đường dẫn tệp log của tiến trình cuối cùng. Lỗi tải trong lúc build hiện trong log này, không hiện trong thông báo DownloadFailedProxySettings của vcpkg.

Lỗi hay gặp với vcpkg proxy

Bảng tra

Bảng: Bảng tra

Hiện tượng

Nguyên nhân thường gặp

Hướng xử lý

Tải treo rồi hết thời gian chờ

HTTPS_PROXY bắt đầu bằng https://

Đổi thành http://

Could not resolve proxy

Mật khẩu có @, # chưa mã hóa

Mã hóa phần trăm

CONNECT tunnel failed, response 407

Thiếu tài khoản

Thêm tài khoản vào URL

Lỗi thu hồi chứng chỉ khi đi proxy trên Windows

Schannel không lấy được danh sách thu hồi

VCPKG_SSL_REVOKE_BEST_EFFORT=1

Lỗi chứng chỉ khi proxy công ty chặn TLS

Thiếu CA của công ty

CURL_CA_BUNDLE trỏ tới tệp CA

Lỗi fetch baseline của registry

git chưa có proxy

Kiểm http.proxy của git

Port tải thêm lúc build bị lỗi

Biến proxy không tới được môi trường build

Kiểm ba biến được giữ, dùng VCPKG_KEEP_ENV_VARS

Sai mã SHA512

Tệp ở URL gốc bị đổi

Không phải lỗi proxy, sửa port hoặc dùng asset cache

Với 407, bài sửa lỗi 407 Proxy Authentication Required có thêm nguyên nhân phía nhà cung cấp.

Lỗi chứng chỉ và tắt kiểm tra

Không tắt kiểm tra chứng chỉ để vượt lỗi. Nếu proxy công ty ký lại HTTPS, xin tệp CA gốc của công ty rồi trỏ CURL_CA_BUNDLE tới đó. Nếu proxy thương mại thông thường mà vẫn lỗi chứng chỉ, có thể proxy đang làm điều không nên, cần kiểm lại nhà cung cấp. Bài ERR_PROXY_CERTIFICATE_INVALID có cách nhận biết.

Proxy chết

Nguyên nhân thứ ba trong thông báo của vcpkg là máy chủ phía xa của proxy ngừng hoạt động. Kiểm proxy bằng curl như phần lab trước khi đổi cấu hình vcpkg. Bài curl proxy có thêm tham số chẩn đoán.

vcpkg proxy trong CI và máy build

GitHub Actions và Azure Pipelines

Lưu URL proxy trong biến bí mật, xuất ra HTTP_PROXY và HTTPS_PROXY ở bước chạy vcpkg. Biến bí mật thường được che trong log, nhưng tham số --debug có thể in URL đã tải, không in biến. Kiểm log một lần để chắc không lộ tài khoản. Bài proxy trong GitHub Actions có cách đặt biến cho từng bước.

CMake gọi vcpkg

Khi dùng vcpkg qua tệp toolchain của CMake, vcpkg install chạy ngay trong bước cấu hình CMake. Biến proxy phải có trong môi trường của tiến trình CMake, tức của IDE hay của lệnh cmake. Visual Studio mở từ menu Start không nhận biến đặt trong cửa sổ PowerShell. Đặt biến trong cấu hình môi trường của dự án, hoặc ở mức biến môi trường người dùng của Windows.

Docker build

Khi build image có bước vcpkg install, truyền proxy bằng tham số build, không ghi vào Dockerfile, để mật khẩu không nằm lại trong lớp image. Bài proxy Docker đã nhắc ở trên có chi tiết.

Gỡ cấu hình, quản lý bí mật và checklist vcpkg proxy

Gỡ cấu hình

Xóa HTTP_PROXY, HTTPS_PROXY, NO_PROXY khỏi môi trường của phiên hay của máy build. Nếu đã đặt http.proxy cho git chỉ để thử, gỡ bằng git config --global --unset http.proxy. Nếu đã thêm VCPKG_KEEP_ENV_VARS, VCPKG_SSL_REVOKE_BEST_EFFORT hay CURL_CA_BUNDLE, xóa khi không cần.

Bí mật

Biến môi trường chứa mật khẩu đi tới mọi tiến trình con, gồm cả script build của từng port. Port là mã từ kho cộng đồng hoặc registry riêng. Dùng tài khoản proxy riêng cho máy build, đổi được bất kỳ lúc nào, hoặc dùng proxy xác thực bằng IP.

Một lưu ý nữa: in toàn bộ biến môi trường để gỡ lỗi là thói quen dễ làm lộ mật khẩu proxy vào log của CI. Chỉ in tên biến hoặc in giá trị đã che phần tài khoản.

Checklist

Checklist vcpkg proxy

Checklist vcpkg proxy

  • Ghi phiên bản vcpkg-tool và commit kho port.
  • HTTP_PROXY và HTTPS_PROXY cùng bắt đầu bằng http://.
  • Mật khẩu mã hóa phần trăm.
  • Trên Linux, đặt biến viết thường.
  • Kiểm bằng curl với cùng biến trước khi chạy vcpkg.
  • Kiểm proxy của Windows nếu không đặt biến.
  • Kiểm git cho registry.
  • Port tải lúc build: ba biến proxy đã được giữ, thêm biến khác bằng VCPKG_KEEP_ENV_VARS.
  • Cân nhắc asset cache và binary cache nội bộ cho nhóm nhiều máy.

Kiểm sau khi gỡ

Mở cửa sổ mới, chạy lại lệnh in biến proxy, kết quả phải trống. Chạy vcpkg install trên project thử nghiệm với bộ nhớ đệm đã xóa, nhật ký proxy không còn dòng nào từ máy này. Nếu máy vẫn tải được, nghĩa là mạng cho đi thẳng. Nếu lỗi, máy cần proxy và cấu hình đã gỡ đúng như dự định.

Chọn proxy cho vcpkg proxy

Loại proxy

vcpkg tải qua libcurl bằng HTTPS, cần proxy HTTP hỗ trợ CONNECT tới cổng 443. libcurl hiểu cả socks5h:// nếu đặt vào biến, nhưng bài chưa kiểm với vcpkg, và git, nuget có thể không cùng hỗ trợ. Dùng cổng HTTP cho đồng bộ.

IP tĩnh

Máy build tải từ nhiều nguồn, có nguồn giới hạn theo IP như API của GitHub. Proxy IP tĩnh dễ quản lý danh sách cho phép ở bộ nhớ đệm nội bộ hay registry riêng. Proxy xoay đổi IP giữa chừng có thể làm đứt lượt tải tệp lớn.

ProxyVN có proxy dân cư tĩnh, datacenter và proxy xoay, hỗ trợ HTTP và SOCKS5, cấp tài khoản user và mật khẩu hoặc xác thực theo IP. Cần proxy HTTP có IP cố định cho máy build, anh em có thể mua proxy Việt Nam tại trang chủ ProxyVN rồi chạy phép thử curl ở trên.

Proxy không thay giới hạn của nguồn

Proxy chỉ đổi đường đi. Giới hạn số request của GitHub hay quyền vào registry riêng vẫn theo token và tài khoản, proxy không vượt được.

Câu hỏi thường gặp về vcpkg proxy

vcpkg có tự dùng proxy Windows không?

Có, theo thông báo trong mã nguồn vcpkg-tool, vcpkg tự dùng cài đặt proxy IE của người dùng trên Windows. Khi đã đặt biến môi trường, nên để hai giá trị giống nhau để khỏi phải đoán bên nào được dùng.

Visual Studio có bản vcpkg riêng, cấu hình có khác không?

Visual Studio đi kèm một bản vcpkg dùng cho chế độ manifest. Cách đọc proxy giống nhau vì cùng vcpkg-tool, khác ở môi trường mà Visual Studio truyền cho tiến trình.

Có cần proxy khi dùng chế độ offline?

vcpkg có thể chạy không cần mạng khi mọi tài sản và gói đã có trong bộ nhớ đệm. Đó là mục tiêu của asset cache và binary cache nội bộ.

Trên Linux có gì khác?

Trên Linux, vcpkg không có bước đọc proxy của Windows, chỉ dựa vào biến môi trường. Tên biến phân biệt hoa thường, và libcurl chỉ đọc http_proxy viết thường cho URL http. Đặt cả hai cách viết là cách an toàn. Lệnh build chạy bằng sudo sẽ mất biến môi trường, tránh dùng sudo với vcpkg.

vcpkg có hỏi tài khoản proxy khi gặp 407 không?

Mã downloads.cpp không có bước hỏi tài khoản. Tài khoản phải nằm sẵn trong URL proxy hoặc proxy phải xác thực bằng IP. Gặp 407 thì vcpkg báo lỗi tải.

Giới hạn của bài

Bài chưa chạy vcpkg thật. Kết luận về cách vcpkg đọc proxy lấy từ mã nguồn vcpkg-tool ngày 29/10/2026 và tài liệu Microsoft Learn. Phép thử biến môi trường chạy bằng curl.exe 8.13.0. Chưa thử Linux, macOS, SOCKS, nguồn NuGet và asset cache thật.

vcpkg proxy và những điều cần nhớ

vcpkg proxy dựa vào HTTP_PROXY và HTTPS_PROXY cùng bắt đầu bằng http://, hoặc proxy của Windows mà vcpkg tự nhận, còn git và CMake lúc build có đường riêng cần kiểm. Lỗi tiền tố https:// làm tải treo chứ không báo ngay, nên thử bằng curl trước khi chạy vcpkg. Cần proxy HTTP ổn định cho vcpkg proxy, liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam.

TIN TỨC LIÊN QUAN