Kiểm thử CDN, cache hit/miss và geo-routing từ IP Việt Nam với proxy tĩnh
Khi site hoặc API đi qua CDN (Cloudflare, Akamai, Fastly, CloudFront…), người dùng Việt Nam có thể nhận POP gần hơn, cache key khác, hoặc rule geo khác hẳn so với request từ laptop ở nước ngoài. Team deploy từ IP Singapore/Mỹ rồi “thấy ổn” vẫn có thể bỏ sót: HTML cũ trên edge VN, header CF-Cache-Status lệch, hoặc redirect locale chỉ kích hoạt với IP VN. Bài này hướng dẫn dùng proxy tĩnh dân cư Việt Nam để kiểm thử CDN / cache / geo-routing hợp pháp trên môi trường staging hoặc production bạn được phép QA.
CDN làm gì với request từ Việt Nam?
Ở mức thực tế team hay gặp:
- Anycast / geo-routing — DNS hoặc anycast đưa bạn tới POP khu vực; latency và đôi khi cả bản HTML/JSON khác.
- Cache theo POP — object đã
HITở POP A chưa chắc đã có ở POP phục vụ VN. - Geo rule / WAF — chặn, challenge, hoặc đổi origin theo quốc gia IP.
- Variant content — giá, ngôn ngữ, banner theo
CF-IPCountryhoặc header tương đương phía CDN.
IP xoay làm khó việc so sánh: mỗi request có thể đi POP khác hoặc bị rule khác. IP tĩnh giúp bạn lặp lại cùng một “góc nhìn” VN trong cả buổi test.
Khi nào cần proxy tĩnh cho việc CDN?
- Sau deploy: xác nhận edge VN đã nhận bản mới (không chỉ origin bạn curl từ CI nước ngoài).
- Debug “user VN thấy bản cũ / sai locale” trong khi team ở nước ngoài thấy đúng.
- Đo cache header (
HIT/MISS/EXPIRED/BYPASS) từ phía visitor VN. - Kiểm rule geo: trang có redirect
.vn, chặn IP nước ngoài, hoặc hiện cổng thanh toán nội địa theo quốc gia.
Thông số proxy tĩnh dân cư: 1.000đ/ngày hoặc 30.000đ/30 ngày; Viettel / VNPT / FPT; HTTP hoặc SOCKS5; mạng dân cư thật, IP sạch. Xem xem bảng giá. Verify: check-proxy.
Quy trình 20 phút (staging hoặc prod được phép)
Bước 1 — Verify exit IP
Gắn proxy vào curl / HTTPie / trình duyệt profile sạch. Mở check-proxy, ghi IP + ISP. Đảm bảo không còn HTTP_PROXY hệ thống trỏ chỗ khác.
Bước 2 — Gọi cùng URL với và không proxy
Ghi nhận:
- Status code và final URL sau redirect.
- Header CDN:
CF-Cache-Status,Age,X-Cache,X-Served-By,Server-Timing(tùy nhà CDN). - Header geo nếu CDN trả: country / colo / POP id.
- Hash hoặc đoạn HTML đặc trưng (ví dụ chuỗi giá VND,
lang="vi").
Lặp 3–5 lần cách nhau vài giây: bạn muốn thấy ổn định (cùng IP, cùng kiểu HIT/MISS sau khi cache ấm), không phải kết quả ngẫu nhiên.
Bước 3 — Phân biệt cache miss “đúng” và geo lệch
| Quan sát | Ý nghĩa gần đúng |
|---|---|
Lần 1 MISS, lần 2–3 HIT, HTML giống nhau |
Cache ấm bình thường trên POP đó |
Luôn MISS từ IP VN nhưng HIT từ IP nước ngoài |
Có thể cache key/POP tách; cần purge hoặc warm từ phía VN |
| HTML/locale khác dù cùng path | Geo variant hoặc cookie — xóa cookie rồi thử lại qua proxy |
| 403 / challenge chỉ với một phía | WAF/geo rule — escalate đúng team security, đừng “tăng retry” mù |
Bước 4 — Warm & purge có kiểm soát
Nếu quy trình nội bộ cho phép: purge URL trên dashboard CDN, rồi warm lại qua proxy tĩnh VN (một GET sạch). Ghi timestamp purge / warm / verify. Tránh warm chỉ từ CI đặt ở region khác rồi kết luận “VN đã OK”.
Checklist trước khi đóng ticket “CDN VN OK”
- [ ] Exit IP đã verify là VN, nhà mạng khớp brief (nếu có)
- [ ] Cùng URL so sánh có/không proxy (hoặc hai region)
- [ ] Header cache ghi vào ticket
- [ ] Nội dung đặc trưng (giá, locale, banner) khớp kỳ vọng VN
- [ ] Không còn phụ thuộc cookie session cũ
- [ ] Đã thử lại sau purge/warm nếu đó là nguyên nhân
Gói ngày hay 30 ngày?
- Sprint performance / CDN ngắn: 1.000đ/ngày.
- Team SRE/QA nhìn edge VN hàng tuần: 30.000đ/30 ngày tiện hơn vì IP không đổi giữa các lần so sánh.
Chi tiết tại ProxyViet.org.
Lưu ý an toàn và kết luận
Chỉ test domain/staging bạn được phép. Không dùng proxy để bypass WAF của hệ thống người khác hay tấn công rate-limit. Không claim “mọi POP VN đều giống nhau” — ghi đúng POP/header bạn thấy.
Kiểm thử CDN từ IP Việt Nam cố định giúp tách lỗi cache POP, geo rule và variant nội dung khỏi giả định “CI nước ngoài đã đại diện user VN”. Thuê proxy tĩnh HTTP/SOCKS5 theo nhà mạng Viettel/VNPT/FPT tại xem bảng giá, xác nhận IP trên check-proxy, rồi mới kết luận ticket CDN.