30 tháng 9, 2026 · 5 phút đọc
Cách công khai bucket Cloudflare R2
Bucket R2 mặc định là riêng tư. Không ai đọc được tệp nếu không có yêu cầu API đã ký, cho đến khi bạn chủ động gán cho bucket một địa chỉ công khai. Có hai cách làm điều đó, và có thể dùng song song.
Cách 1: kết nối tên miền riêng (khuyên dùng)
Tên miền riêng phục vụ bucket qua mạng lưới của Cloudflare kèm bộ nhớ đệm, và cho phép bạn dùng quy tắc WAF hoặc Cloudflare Access sau này. Tên miền phải là một zone trong cùng tài khoản Cloudflare với bucket (thiết lập CNAME đầy đủ hay một phần đều được).
- Trong dashboard Cloudflare, vào R2 Object Storage và chọn bucket của bạn.
- Mở Settings, tìm Custom Domains, rồi chọn Add.
- Nhập một tên miền con như
files.example.comvà chọn Continue. - Xem lại bản ghi DNS mà Cloudflare sẽ tạo và chọn Connect Domain.
Trạng thái chuyển từ Initializing sang Active trong vài phút. Sau đó, đối tượng có khóa 2026/09/report.pdf sẽ có tại https://files.example.com/2026/09/report.pdf.
Cách 2: bật Public Development URL r2.dev
Để thử nhanh, R2 có thể cấp cho bucket một địa chỉ do Cloudflare quản lý:
- Mở Settings của bucket.
- Trong Public Development URL, chọn Enable.
- Gõ
allowđể xác nhận và chọn Allow.
Giờ bucket có thể truy cập tại https://pub-<id>.r2.dev/<key>. Cloudflare giới hạn tốc độ của URL này và cho biết nó dành cho phát triển, nên hãy chuyển sang tên miền riêng trước khi chia sẻ liên kết rộng rãi. Việc trỏ CNAME của riêng bạn đến địa chỉ r2.dev không được hỗ trợ.
Truy cập công khai để lộ gì và không để lộ gì
- Chỉ đọc. Truy cập công khai cho phép bất kỳ ai đọc đối tượng nếu biết khóa của nó. Tải lên và xóa vẫn cần thông tin xác thực API.
- Không liệt kê thư mục. Truy cập gốc của tên miền không liệt kê nội dung bucket. Tên đối tượng ngẫu nhiên giúp liên kết khó đoán.
- Mọi thứ trong bucket. Quyền truy cập áp dụng cho từng bucket, không theo thư mục. Hãy giữ tệp riêng tư trong một bucket khác.
- Bộ nhớ đệm. Mặc định, Cloudflare chỉ lưu đệm một số phần mở rộng tệp nhất định. Thêm một cache rule nếu bạn muốn mọi loại tệp đều được lưu đệm.
Sửa lỗi Access Denied trên liên kết R2
Nếu liên kết trả về Access Denied, 401 hoặc 403, hãy kiểm tra lần lượt:
- Liên kết dùng tên miền riêng hoặc URL r2.dev, không phải
<account-id>.r2.cloudflarestorage.com. Host đó là S3 API và luôn cần chữ ký. - Tên miền riêng hiển thị Active và quyền truy cập bucket là Allowed trong cài đặt của bucket.
- Khóa trong URL khớp chính xác với đối tượng, kể cả thư mục và chữ hoa, chữ thường.
Câu hỏi thường gặp
Công khai bucket R2 có an toàn không?
An toàn với những tệp bạn muốn chia sẻ. Ai có liên kết đều đọc được tệp đó, nhưng không thể liệt kê bucket, tải lên hay xóa. Hãy giữ dữ liệu riêng tư trong một bucket khác.
Bucket R2 công khai có tốn thêm chi phí không?
Không. R2 không tính phí egress, nên lượt tải xuống công khai không làm tăng chi phí băng thông. Mỗi lần đọc được tính là thao tác Class B, vốn có hạn mức miễn phí hằng tháng.
Tôi có thể chỉ công khai một thư mục không?
Không thể với tính năng truy cập công khai của R2, vốn áp dụng cho cả bucket. Hãy dùng một bucket riêng, hoặc giữ bucket riêng tư và chia sẻ presigned URL.