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!
PAC Proxy: Hướng dẫn cấu hình tự động cho doanh nghiệp

PAC Proxy: Hướng dẫn cấu hình tự động cho doanh nghiệp

SEO Administrator 07-16-2026 Đang tính... phút đọc

PAC Proxy cho phép trình duyệt tự chọn proxy hoặc kết nối trực tiếp theo từng địa chỉ truy cập. Trong bài này, ProxyVN hướng dẫn anh em hiểu cú pháp, viết PAC file, triển khai trên máy người dùng và kiểm tra lỗi. Nhờ đó, đội ngũ có thể quản lý đường truyền linh hoạt hơn mà không phải nhập proxy thủ công cho từng website.

PAC Proxy là gì và hoạt động ra sao?

PAC là viết tắt của Proxy Auto-Configuration. Đây là tệp JavaScript chứa quy tắc để ứng dụng xác định một yêu cầu web nên đi qua máy chủ proxy nào hay kết nối trực tiếp.

Proxy Auto-Configuration

Proxy Auto-Configuration

Theo tài liệu PAC của MDN, tệp tự động cấu hình thường được lưu với đuôi .pac. Bên trong tệp phải có hàm sau:

function FindProxyForURL(url, host) {
    return "DIRECT";
}

Mỗi khi người dùng mở một URL, trình duyệt gọi hàm này. url chứa địa chỉ đầy đủ, còn host chứa tên miền hoặc địa chỉ máy chủ.

Giá trị hàm trả về quyết định tuyến kết nối. Những dạng phổ biến gồm:

  • DIRECT: kết nối thẳng đến website, không qua proxy.

  • PROXY proxy.example.com:8080: dùng HTTP proxy tại máy chủ và cổng được chỉ định.

  • SOCKS socks.example.com:1080: dùng SOCKS proxy nếu ứng dụng hỗ trợ.

  • PROXY proxy-a:8080; PROXY proxy-b:8080; DIRECT: thử lần lượt proxy A, proxy B, rồi mới kết nối trực tiếp.

Thứ tự trong chuỗi trả về chính là thứ tự dự phòng. Vì vậy, đặt DIRECT ở cuối có thể duy trì truy cập khi proxy lỗi, nhưng cũng có thể tạo đường vòng ngoài chính sách kiểm soát.

Trong doanh nghiệp, cách này phù hợp khi mạng nội bộ và Internet cần đường đi khác nhau. PAC file quản lý theo quy tắc thay vì cấu hình cứng từng thiết bị.

Các hàm thường dùng trong PAC Proxy

PAC có các hàm dựng sẵn để so khớp tên miền, IP và thời gian. Dùng đúng hàm sẽ hạn chế truy vấn DNS không cần thiết.

So khớp tên miền và URL

Hai hàm thường gặp nhất là dnsDomainIs() và shExpMatch():

  • dnsDomainIs(host, ".example.com"): kiểm tra hậu tố tên miền.

  • shExpMatch(host, "*.example.com"): so khớp theo ký tự đại diện kiểu shell.

  • isPlainHostName(host): nhận biết hostname nội bộ không có dấu chấm, chẳng hạn intranet.

*.example.com khớp tên miền con nhưng không nên mặc định bao gồm example.com. Nếu cần cả hai, hãy ghi hai điều kiện.

Kiểm tra IP và mạng con

Khi quy tắc phụ thuộc địa chỉ mạng, PAC cung cấp:

  • isInNet(host, pattern, mask): kiểm tra host có thuộc subnet IPv4 đã xác định hay không.

  • dnsResolve(host): phân giải hostname thành địa chỉ IP.

  • myIpAddress(): lấy địa chỉ IP của thiết bị khách theo cách triển khai của trình duyệt.

MDN lưu ý isInNet()dnsResolve() có thể tạo truy vấn DNS. Nếu chỉ xét tên miền, so khớp chuỗi thường ít tốn tài nguyên hơn.

Chọn tuyến theo ngày và giờ

Các hàm weekdayRange()timeRange() hỗ trợ quy tắc theo lịch. Logic này cần được kiểm thử kỹ nếu thiết bị hoạt động ở nhiều múi giờ.

Nhìn chung, anh em nên đặt ngoại lệ cụ thể ở đầu và tuyến mặc định ở cuối. Cấu trúc này giúp PAC file dễ bảo trì hơn.

Cách viết PAC Proxy theo từng tình huống

Trước khi viết code, hãy chia truy cập thành ba nhóm: đi trực tiếp, bắt buộc qua proxy và được dùng tuyến dự phòng. Sau đó, xếp quy tắc từ cụ thể đến tổng quát.

Ví dụ định tuyến một nhóm tên miền

Đoạn mã dưới đây đưa tên miền gốc và các tên miền con của example.com qua proxy. Những địa chỉ khác được kết nối trực tiếp.

function FindProxyForURL(url, host) {
    if (host === "example.com" || shExpMatch(host, "*.example.com")) {
        return "PROXY proxy.example.com:8080";
    }
 
    return "DIRECT";
}

Cách viết này rõ hơn việc chỉ dùng *.example.com, vì tên miền gốc đã được xử lý riêng.

Ví dụ mạng nội bộ và proxy dự phòng

Ví dụ sau cho phép hostname, domain nội bộ và subnet riêng đi trực tiếp. Lưu lượng còn lại qua proxy chính, rồi proxy phụ.

function FindProxyForURL(url, host) {
    if (
        isPlainHostName(host) ||
        dnsDomainIs(host, ".internal.local") ||
        isInNet(host, "192.168.1.0", "255.255.255.0")
    ) {
        return "DIRECT";
    }
 
    return "PROXY proxy-a.mycorp.com:3128; " +
           "PROXY proxy-b.mycorp.com:3128";
}

Ví dụ không thêm DIRECT ở cuối vì doanh nghiệp không muốn lưu lượng bỏ qua kiểm soát khi hai proxy ngừng phản hồi.

Kinh nghiệm khi vận hành cho thấy lỗi khó tìm thường không nằm ở dấu chấm phẩy. Chúng xuất hiện khi một ngoại lệ quá rộng, DNS phản hồi khác nhau hoặc DIRECT vô tình trở thành đường né chính sách.

Trước khi áp dụng diện rộng, hãy thử domain nội bộ, domain ngoài, tên miền gốc, tên miền con và một địa chỉ dự kiến bị chặn.

Triển khai và kiểm tra PAC Proxy

Khi logic đã ổn, hãy đưa tệp lên máy chủ và thử với một nhóm nhỏ trước khi triển khai toàn công ty.

Kiểm tra Proxy Auto-Configuration

Kiểm tra Proxy Auto-Configuration

Tạo và phân phối PAC file

Anh em có thể tạo tệp bằng trình soạn thảo quen thuộc. Trên Linux, một lệnh cơ bản là:

nano /var/www/html/proxy.pac

Sau đó, cấu hình máy chủ phục vụ tệp với MIME type application/x-ns-proxy-autoconfig, theo hướng dẫn proxy và tunneling của MDN.

URL có thể mang dạng https://intranet.example.com/proxy.pac. Máy chủ chứa tệp phải truy cập được mà không phụ thuộc vào chính proxy đang cấu hình.

Trên thiết bị người dùng, đường dẫn thiết lập thường nằm ở các vị trí sau:

  • Windows 11: Settings, Network & internet, Proxy, bật Use setup script và nhập Script address.

  • macOS: System Settings, Network, Details, Proxies, bật Automatic Proxy Configuration.

  • Linux GNOME: Settings, Network Proxy, chọn Automatic và nhập Configuration URL.

  • Firefox: Settings, Network Settings, chọn Automatic proxy configuration URL. Mozilla Support hướng dẫn dùng nút Reload để tải lại tệp.

Tên menu có thể đổi theo phiên bản. Doanh nghiệp lớn nên phân phối URL bằng chính sách quản lý thiết bị.

Kiểm tra theo ba lớp

Đừng chỉ mở một website rồi kết luận PAC hoạt động. Một quy trình đáng tin cậy nên kiểm tra lần lượt ba lớp sau:

  • Kiểm tra phân phối: chạy curl -I https://intranet.example.com/proxy.pac để xem tệp có tải được và Content-Type có đúng hay không.

  • Kiểm tra quyết định: dùng pacparser và công cụ pactester để nhập từng URL mẫu, sau đó xem kết quả là DIRECT hay proxy dự kiến.

  • Kiểm tra kết nối: truy cập URL trên thiết bị thử nghiệm, xác nhận IP đi ra, nhật ký proxy và khả năng chuyển sang máy chủ dự phòng.

Ví dụ kiểm tra một URL bằng pactester:

pactester -p proxy.pac -u https://www.example.com

Với Chrome hoặc Edge, anh em có thể ghi nhật ký mạng tại chrome://net-export, tái hiện lỗi rồi phân tích NetLog. Cách này phù hợp hơn đường dẫn chrome://net-internals/#proxy đã xuất hiện trong nhiều hướng dẫn cũ.

Cuối cùng, cần lưu ý rằng curl --proxy "$(cat proxy.pac | grep return)" không kiểm tra PAC file đúng cách. curl không tự thực thi hàm FindProxyForURL() từ chuỗi lấy bằng grep; vì vậy, kết quả dễ sai hoặc lệnh không chạy.

PAC Proxy giúp doanh nghiệp chọn proxy theo domain, IP và tuyến dự phòng, thay vì cấu hình thủ công. Để vận hành ổn định, anh em nên giữ quy tắc ngắn, kiểm tra DNS, cân nhắc DIRECT và thử trước khi triển khai rộng. Hãy tham khảo Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam khi xây dựng hệ thống PAC Proxy.

TIN TỨC LIÊN QUAN