Triển khai lên Cloudflare Pages
Cloudflare Pages cung cấp dịch vụ lưu trữ trang tĩnh toàn cầu, nhanh, với băng thông không giới hạn.
Triển khai nhanh
- Vào Cloudflare Pages
- Nhấp "Create a project"
- Kết nối kho GitHub của bạn
Cấu hình build
| Cài đặt | Giá trị |
|---|---|
| Framework preset | None |
| Build command | npm run build |
| Build output directory | dist |
| Root directory | / |
Biến môi trường
Thêm các biến này trong Settings → Environment variables:
| Biến | Giá trị |
|---|---|
NODE_VERSION | 18 |
SIMPLE_MODE | false (tùy chọn) |
VITE_BRAND_NAME | Tên thương hiệu tùy chỉnh (tùy chọn) |
VITE_BRAND_LOGO | Đường dẫn logo tương đối so với public/ (tùy chọn) |
VITE_FOOTER_TEXT | Văn bản chân trang/bản quyền tùy chỉnh (tùy chọn) |
VITE_DEFAULT_LANGUAGE | Ngôn ngữ giao diện mặc định, ví dụ fr (tùy chọn) |
Tệp cấu hình
Tạo _headers trong thư mục public của bạn:
# Required security headers for SharedArrayBuffer (used by LibreOffice WASM)
/*
Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: cross-origin
# Pre-compressed LibreOffice WASM binary
/libreoffice-wasm/soffice.wasm.gz
Content-Type: application/wasm
Content-Encoding: gzip
Cache-Control: public, max-age=31536000, immutable
# Pre-compressed LibreOffice WASM data
/libreoffice-wasm/soffice.data.gz
Content-Type: application/octet-stream
Content-Encoding: gzip
Cache-Control: public, max-age=31536000, immutable
# Cache WASM files aggressively
/*.wasm
Cache-Control: public, max-age=31536000, immutable
Content-Type: application/wasm
# Service worker
/sw.js
Cache-Control: no-cacheQuan trọng
Các header Cross-Origin-Embedder-Policy và Cross-Origin-Opener-Policy là bắt buộc cho việc chuyển Word/ODT/Excel/PowerPoint sang PDF. Nếu thiếu, SharedArrayBuffer sẽ không khả dụng và engine LibreOffice WASM sẽ không khởi tạo được.
Tạo _redirects cho định tuyến SPA:
/* /index.html 200Tên miền tùy chỉnh
- Vào dự án Pages của bạn
- Nhấp "Custom domains"
- Thêm tên miền của bạn
- Cloudflare sẽ tự động cấu hình DNS nếu tên miền nằm trên Cloudflare
Ưu điểm
- Băng thông không giới hạn, miễn phí
- CDN toàn cầu với hơn 300 điểm biên
- HTTPS tự động
- Bản triển khai xem trước cho pull request
- Build nhanh
Khắc phục sự cố
Tải lên tệp lớn
Cloudflare Pages hỗ trợ tệp tối đa 25 MB. Các module WASM thường ổn, nhưng nếu bạn chạm giới hạn, hãy cân nhắc:
bash
# Split large files during build
npm run buildGiới hạn kích thước Worker
Nếu dùng Cloudflare Workers cho định tuyến nâng cao, lưu ý giới hạn 1 MB cho gói miễn phí.
CORS Proxy Worker (cho chữ ký số)
Công cụ Chữ ký số cần một CORS proxy để lấy chuỗi chứng chỉ. Hãy triển khai worker đi kèm:
bash
cd cloudflare
npx wrangler login
npx wrangler deployTính năng bảo mật
| Tính năng | Mô tả |
|---|---|
| Hạn chế URL | Chỉ cho phép URL chứng chỉ |
| Giới hạn kích thước tệp | Tối đa 10MB mỗi yêu cầu |
| Giới hạn tốc độ | 60 yêu cầu/IP/phút (cần KV) |
| Chặn IP riêng | Chặn localhost và các IP nội bộ |
Bật giới hạn tốc độ
bash
# Create KV namespace
npx wrangler kv namespace create "RATE_LIMIT_KV"
# Add to wrangler.toml with returned ID:
# [[kv_namespaces]]
# binding = "RATE_LIMIT_KV"
# id = "YOUR_ID"
npx wrangler deployBuild với URL proxy
bash
VITE_CORS_PROXY_URL=https://your-worker.workers.dev npm run buildHoặc với Docker:
bash
export VITE_CORS_PROXY_URL="https://your-worker.workers.dev"
DOCKER_BUILDKIT=1 docker build \
--secret id=VITE_CORS_PROXY_URL,env=VITE_CORS_PROXY_URL \
-t your-bentopdf .Lưu ý: Xem README để biết cách thiết lập chữ ký HMAC.