# Snippets 配置指南
## 配置方法
### 1. 仪表板 (GUI)
**适用场景**:快速测试、单个片段、可视化规则构建
1. 进入区域 → Rules → Snippets
2. 点击 "Create Snippet" 或选择模板
3. 输入片段名称 (仅限 a-z, 0-9, _, 之后无法更改)
4. 编写 JavaScript 代码 (最大 32KB)
5. 配置片段规则:
- 表达式构建器 (可视化) 或表达式编辑器 (文本)
- 使用规则集引擎过滤表达式
6. 使用 Preview/HTTP 选项卡测试
7. 部署或保存为草稿
### 2. REST API
**适用场景**:CI/CD、自动化、程序化管理
bash
# 创建/更新片段
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/snippets/$SNIPPET_NAME"
--request PUT
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
--form "
[email protected]"
--form "metadata={"main_module": "example.js"}"
# 创建片段规则
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/snippets/snippet_rules"
--request PUT
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
--header "Content-Type: application/json"
--data '{
"rules": [
{
"description": "在 /api 路径触发片段",
"enabled": true,
"expression": "starts_with(http.request.uri.path, "/api/")",
"snippet_name": "api_snippet"
}
]
}'
# 列出片段
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/snippets"
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
# 删除片段
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/snippets/$SNIPPET_NAME"
--request DELETE
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"
### 3. Terraform
**适用场景**:基础设施即代码、多区域部署
hcl
# 配置 Terraform 提供程序
terraform {
required_providers {
cloudflare = {
source = "cloudflare/cloudflare"
version = "~> 4.0"
}
}
}
provider "cloudflare" {
api_token = var.cloudflare_api_token
}
# 创建片段
resource "cloudflare_snippet" "security_headers" {
zone_id = var.zone_id
name = "security_headers"
main_module = "security_headers.js"
files {
name = "security_headers.js"
content = file("${path.module}/snippets/security_headers.js")
}
}
# 创建片段规则
resource "cloudflare_snippet_rules" "security_rules" {
zone_id = var.zone_id
rules {
description = "将安全标头应用于所有请求"
enabled = true
expression = "true"