Files
obsidian/services/bunnycdn.md

615 lines
20 KiB
Markdown

---
title: BunnyCDN Reference
updated: 2026-03-12
tags: [cdn, bunnycdn, infrastructure, reference]
---
# BunnyCDN Reference
Bunny.net CDN 공식 문서 기반 종합 레퍼런스. API, 설정, 보안, 가격 등 실무 참조용.
## 1. Pull Zone Configuration
### Origin 설정
| 필드 | 타입 | 설명 |
|------|------|------|
| `OriginUrl` | string | 파일을 가져올 원본 서버 URL |
| `OriginType` | enum | `OriginUrl`, `DnsAccelerate`, `StorageZone`, `LoadBalancer`, `EdgeScript`, `MagicContainers`, `PushZone` |
| `OriginHostHeader` | string | Origin으로 전송할 Host 헤더 |
| `AddHostHeader` | boolean | 요청된 Host 헤더를 origin에 전달 |
| `DnsOriginPort` | int32 | Origin 포트 |
| `DnsOriginScheme` | string | Origin 프로토콜 (http/https) |
| `StorageZoneId` | int64 | Storage Zone을 origin으로 사용 시 ID |
| `VerifyOriginSSL` | boolean | Origin SSL 인증서 검증 |
### 캐싱 설정
| 필드 | 타입 | 설명 |
|------|------|------|
| `CacheControlMaxAgeOverride` | int64 | 캐시 제어 override (초) |
| `CacheControlPublicMaxAgeOverride` | int64 | 브라우저 캐시 override (초) |
| `IgnoreQueryStrings` | boolean | 캐시 키에서 쿼리스트링 무시 |
| `QueryStringVaryParameters` | array | 캐시 키에 사용할 특정 쿼리 파라미터 |
| `EnableCacheSlice` | boolean | 비디오 최적화용 cache slicing |
| `CacheErrorResponses` | boolean | Origin 에러 응답도 캐시 |
| `UseStaleWhileUpdating` | boolean | 업데이트 중 stale 캐시 제공 |
| `UseStaleWhileOffline` | boolean | Origin 다운 시 stale 캐시 제공 |
| `UseBackgroundUpdate` | boolean | 백그라운드 캐시 갱신 |
| `EnableSmartCache` | boolean | 스마트 캐싱 |
| `EnableRequestCoalescing` | boolean | 동일 요청 병합 |
| `RequestCoalescingTimeout` | int32 | 병합 락 시간 |
| `EnableQueryStringOrdering` | boolean | 쿼리스트링 정렬로 캐시 히트율 향상 |
### Cache Vary 설정
| 필드 | 설명 |
|------|------|
| `EnableWebpVary` | WebP 포맷별 캐시 분리 |
| `EnableAvifVary` | AVIF 포맷별 캐시 분리 |
| `EnableMobileVary` | 모바일 디바이스별 캐시 분리 |
| `EnableCountryCodeVary` | 국가별 캐시 분리 |
| `EnableHostnameVary` | 호스트네임별 캐시 분리 |
| `EnableCookieVary` | 쿠키별 캐시 분리 |
| `CookieVaryParameters` | Vary에 사용할 쿠키 목록 |
### Origin Reliability
| 필드 | 설명 |
|------|------|
| `OriginRetries` | Origin 재시도 횟수 |
| `OriginConnectTimeout` | Origin 연결 타임아웃 (초) |
| `OriginResponseTimeout` | Origin 응답 타임아웃 (초) |
| `OriginRetry5XXResponses` | 5XX 에러 시 재시도 |
| `OriginRetryConnectionTimeout` | 연결 타임아웃 시 재시도 |
| `OriginRetryResponseTimeout` | 응답 타임아웃 시 재시도 |
| `OriginRetryDelay` | 재시도 전 대기 (ms) |
| `FollowRedirects` | Origin 리다이렉트 시 캐시 |
### Geo Zone (지역별 활성화)
- `EnableGeoZoneUS` - 북미
- `EnableGeoZoneEU` - 유럽
- `EnableGeoZoneASIA` - 아시아/오세아니아
- `EnableGeoZoneSA` - 남미
- `EnableGeoZoneAF` - 아프리카
### Pull Zone 타입
- `Type`: `Premium` (Standard) 또는 `Volume` (High Volume)
- Standard: 119 PoPs, 글로벌 최적 레이턴시
- Volume: 10 PoPs, 대용량/비디오에 적합, 저렴
---
## 2. Custom Hostnames
### 설정 프로세스
1. Pull Zone 생성 시 기본 호스트네임: `{zonename}.b-cdn.net`
2. DNS에 CNAME 레코드 추가: `cdn.example.com` -> `{zonename}.b-cdn.net`
- TTL: 3600 이하 권장
- Proxy 옵션 비활성화 필수 (Cloudflare 등에서)
3. Bunny 대시보드에서 Custom Hostname 추가
4. SSL 인증서 설정
### SSL 인증서 옵션
| 옵션 | 설명 |
|------|------|
| Free Let's Encrypt | 자동 발급/갱신. CNAME 설정 후 사용 가능 |
| Custom Certificate | Base64 인코딩된 인증서+키 업로드 |
| Wildcard SSL | Bunny DNS 사용 시만 자동 발급 가능, 아니면 커스텀 인증서 업로드 필요 |
### ForceSSL
- HTTP -> HTTPS 자동 리다이렉트
- 호스트네임별 개별 설정 가능
### SSL/TLS 프로토콜 설정
| 필드 | 설명 |
|------|------|
| `EnableTLS1` | TLS 1.0 지원 (레거시, 비권장) |
| `EnableTLS1_1` | TLS 1.1 지원 (레거시, 비권장) |
| `EnableAutoSSL` | 호스트네임 추가 시 자동 SSL |
| `DisableLetsEncrypt` | Let's Encrypt 자동 발급 비활성화 |
### SSL 인증서 유효성 검사
- HTTP-01: 기본 방식 (`useOnlyHttp01=true`)
- DNS-01: Bunny DNS Zone 존재 시 사용 가능 (`useOnlyHttp01=false`). 와일드카드 도메인은 DNS-01만 지원
---
## 3. Edge Rules
### Action 타입 (11종)
| Action | 설명 |
|--------|------|
| Force SSL | HTTP를 HTTPS로 리다이렉트 |
| Redirect to URL | 다른 URL로 리다이렉트 |
| Change Origin URL | 다른 origin 서버로 라우팅 |
| Override Cache Time | 커스텀 캐시 시간 설정 |
| Block Request | 조건 매칭 요청 차단 |
| Set Response Header | 응답 헤더 추가/수정 |
| Set Request Header | Origin으로 보내는 요청 헤더 추가/수정 |
| Force Download | 브라우저에서 파일 다운로드 강제 |
| Disable/Enable Token Auth | 요청별 토큰 인증 제어 |
| Override Browser Cache Time | 브라우저 캐시 시간 커스텀 |
| Set Network Rate Limit | 매칭 요청의 대역폭 제한 |
### Trigger 타입
| Trigger | 설명 |
|---------|------|
| Request URL | URL 경로 매칭 |
| Request Header | 특정 HTTP 헤더 매칭 |
| Response Header | 응답 헤더 매칭 |
| Country Code | GeoIP 국가 코드 매칭 |
| Remote IP | 클라이언트 IP 매칭 |
| File Extension | 파일 확장자 매칭 |
### Match 조건
- **Match Any**: 하나라도 매칭되면 실행
- **Match All**: 모든 조건 매칭 시 실행
- **Match None**: 어떤 것도 매칭되지 않을 때 실행
- 하나의 룰에 여러 트리거 + 여러 액션 설정 가능
### Variable Expansion
Edge Rules에서 `%{Collection.Key}` 문법으로 동적 변수 사용 가능.
**지원 액션**: Change Origin URL, Redirect to URL, Set Request Header, Set Response Header
| Collection | 변수 | 설명 |
|------------|-------|------|
| RequestHeaders | `%{RequestHeaders.Host}` | 요청 Host 헤더 |
| RequestHeaders | `%{RequestHeaders.User-Agent}` | User-Agent |
| RequestHeaders | `%{RequestHeaders.Accept-Language}` | 언어 |
| Query | `%{Query.paramname}` | 쿼리 파라미터 값 |
| Request | `%{Request.Method}` | HTTP 메서드 |
| Request | `%{Request.Path}` | 전체 경로 (쿼리 포함) |
| Request | `%{Request.QueryString}` | 쿼리스트링만 |
| Path | `%{Path.0}`, `%{Path.0-2}`, `%{Path.3-}` | URL 경로 세그먼트 (인덱스/범위) |
| Url | `%{Url.FileName}` | 파일명 |
| Url | `%{Url.Extension}` | 확장자 |
| Url | `%{Url.Directory}` | 디렉토리 |
| Url | `%{Url.Hostname}` | 호스트네임 |
| User | `%{User.IP}` | 클라이언트 IP |
| User | `%{User.CountryCode}` | 2자리 국가 코드 |
| Server | `%{Server.ZoneCode}` | 서버 존 코드 |
| Server | `%{Server.ID}` | 서버 ID |
---
## 4. API Reference
### 기본 정보
- **Base URL**: `https://api.bunny.net`
- **인증**: `AccessKey` 헤더에 API 키
- **API 키 위치**: 대시보드 > Account > API Keys
### API 카테고리
| 카테고리 | 설명 |
|----------|------|
| Pull Zones | CDN 존 관리 |
| Storage Zones | 엣지 스토리지 |
| DNS Zones | DNS 관리 |
| Stream Video Libraries | 비디오 콘텐츠 |
| Statistics | 대역폭/성능 통계 |
| Billing | 과금/소비 데이터 |
| Purge | 캐시 무효화 |
| API Keys | 자격증명 관리 |
| Countries | 지역 차단 참조 |
| Regions | 엣지 서버 위치 |
### 주요 Pull Zone 엔드포인트
#### List Pull Zones
```
GET /pullzone
Query: page, perPage (5-1000), search, includeCertificate
Response: { Items[], CurrentPage, TotalItems, HasMoreItems }
```
#### Add Pull Zone
```
POST /pullzone
Body: { Name, OriginUrl, Type, ... }
```
#### Update Pull Zone
```
POST /pullzone/{id}
Body: (전체 설정 필드 - 섹션 1 참조)
```
#### Delete Pull Zone
```
DELETE /pullzone/{id}
```
### Hostname 관리 엔드포인트
#### Add Custom Hostname
```
POST /pullzone/{id}/addHostname
Body: { "Hostname": "cdn.example.com" }
Response: 204
```
#### Remove Custom Hostname
```
DELETE /pullzone/{id}/removeHostname
Body: { "Hostname": "cdn.example.com" }
Response: 204
```
#### Set Force SSL
```
POST /pullzone/{id}/setForceSSL
Body: { "Hostname": "cdn.example.com", "ForceSSL": true }
Response: 204
```
#### Load Free Certificate (Let's Encrypt)
```
GET /pullzone/loadFreeCertificate?hostname=cdn.example.com&useOnlyHttp01=true
- useOnlyHttp01=false: Bunny DNS Zone 존재 시 DNS-01 검증 시도
- 와일드카드 도메인: DNS-01만 지원
Response: 200
```
#### Add Custom Certificate
```
POST /pullzone/{id}/addCertificate
Body: {
"Hostname": "cdn.example.com",
"Certificate": "<base64-encoded-cert>",
"CertificateKey": "<base64-encoded-key>"
}
Response: 204
```
### Cache Purge 엔드포인트
#### Purge Pull Zone Cache (전체 또는 태그별)
```
POST /pullzone/{id}/purgeCache
Body: { "CacheTag": "optional-tag" } // CacheTag 생략 시 전체 퍼지
Response: 204
```
#### Purge URL (개별 URL)
```
POST /purge?url=https://cdn.example.com/path/file.js
Response: 204
```
---
## 5. Bunny Shield (DDoS Protection)
### 개요
Bunny Shield는 통합 보안 스택. 200+ Tbps 네트워크, 119개 글로벌 스크러빙 센터.
### 주요 기능 6가지
| 기능 | 설명 |
|------|------|
| WAF | OWASP Top 10, zero-day 익스플로잇 차단 |
| DDoS Protection | 대규모 공격 완화, stateful mitigation |
| Rate Limiting | IP/사용자/경로별 요청 제한 |
| Bot Detection | 악성 봇 실시간 탐지/차단 |
| Access Lists | VPN, Tor 노드 등 차단 |
| Upload Scanning | 파일 바이러스/악성코드/CSAM 스캔 |
### DDoS Protection 설정
Pull Zone 필드:
- `ShieldDDosProtectionEnabled`: boolean
- `ShieldDDosProtectionType`: `DetectOnly`, `ActiveStandard`, `ActiveAggressive`
### DDoS 보호 메커니즘
1. **Stateful Request Tracking**: 요청 정당성 검증
2. **JavaScript Proof-of-Work Challenge**: 브라우저에 연산 과제 부여, 봇 차별화
3. **Behavioral Analysis**: 실시간 트래픽 패턴 분석
### DDoS Sensitivity 레벨
| 레벨 | 값 | 설명 |
|------|-----|------|
| Low | 1 | 최소 보호 |
| Medium | 2 | 권장 시작점 |
| High | 3 | 강화 보호 |
| Extreme | 4 | 항시 활성화 (Always-On) |
---
## 6. WAF (Web Application Firewall)
### 보호 범위
- **SQL Injection**: 쿼리 파라미터/폼의 SQL 인젝션 탐지/차단
- **XSS Protection**: 악성 스크립트 실행 시도 차단
- **Remote File Inclusion (RFI)**: 원격 서버 파일 포함 시도 차단
- **OWASP Top 10**: 전체 커버리지
### 기능
- AI 기반 자동 위협 탐지
- 커스텀 보안 규칙 설정 가능
- 실시간 트래픽 모니터링
- 저레이턴시 처리
- 정기적 위협 정의 업데이트
### WAF 로그 API
```
GET https://api.bunny.net/shield/event-logs/{shieldZoneId}
```
차단/허용 트래픽의 상세 로그 조회.
---
## 7. Optimizer (Image Optimization)
### 가격
- **$9.50/월** per Pull Zone
- 무제한 요청, 무제한 최적화, 무제한 이미지
- 대역폭은 별도 과금
### 설정 필드
| 필드 | 설명 |
|------|------|
| `OptimizerEnabled` | Optimizer 활성화 |
| `OptimizerEnableWebP` | WebP 포맷 변환 |
| `OptimizerEnableManipulationEngine` | 이미지 조작 엔진 |
| `OptimizerImageQuality` | 데스크톱 이미지 품질 (1-100) |
| `OptimizerMobileImageQuality` | 모바일 이미지 품질 (1-100) |
| `OptimizerDesktopMaxWidth` | 데스크톱 최대 이미지 폭 (0-5000) |
| `OptimizerMobileMaxWidth` | 모바일 최대 이미지 폭 (0-5000) |
| `OptimizerMinifyCSS` | CSS 미니파이 |
| `OptimizerMinifyJavaScript` | JavaScript 미니파이 |
| `OptimizerPrerenderHtml` | SEO HTML 프리렌더 |
| `OptimizerAutomaticOptimizationEnabled` | 자동 최적화 |
| `OptimizerEnableUpscaling` | 이미지 업스케일링 |
| `OptimizerTunnelEnabled` | Origin 터널 최적화 |
### Watermark 설정
| 필드 | 설명 |
|------|------|
| `OptimizerWatermarkEnabled` | 워터마크 활성화 |
| `OptimizerWatermarkUrl` | 워터마크 이미지 URL |
| `OptimizerWatermarkPosition` | `BottomLeft`, `BottomRight`, `TopLeft`, `TopRight`, `Center`, `CenterStretch` |
| `OptimizerWatermarkOffset` | 오프셋 거리 |
| `OptimizerWatermarkMinImageSize` | 워터마크 적용 최소 이미지 크기 |
### Static HTML Optimization
- `OptimizerStaticHtmlEnabled`: 정적 HTML 최적화
- `OptimizerStaticHtmlWordPressPath`: WordPress 경로
- `OptimizerStaticHtmlWordPressBypassCookie`: WordPress 바이패스 쿠키
---
## 8. DNS Integration
### Bunny DNS 지원 레코드 타입
| Enum | 타입 | 설명 |
|------|------|------|
| 0 | A | IPv4 |
| 1 | AAAA | IPv6 |
| 2 | CNAME | Canonical Name |
| 3 | TXT | 텍스트 |
| 4 | MX | 메일 |
| 5 | Redirect (RDR) | 리다이렉트 레코드 |
| 6 | Flatten | CNAME Flattening |
| 7 | PullZone | Pull Zone 직접 매핑 |
| 8 | SRV | Service |
| 9 | CAA | Certificate Authority Authorization |
| 10 | PTR | Pointer |
| 11 | Script | DNS 스크립트 연결 |
| 12 | NS | Name Server |
| 13 | SVCB | Service Binding |
| 14 | HTTPS | HTTPS Service |
| 15 | TLSA | TLS Authentication |
### 특수 레코드
- **PullZone 레코드**: DNS 레코드를 기존 Pull Zone에 직접 매핑
- **Flatten 레코드**: 루트 도메인에서 CNAME 기능 (ANAME 역할)
- **Script 레코드**: DNS 스크립트 연결
- **Accelerated 레코드**: CDN 가속을 위한 Pull Zone 연결 (`Accelerated: true`, `AcceleratedPullZoneId`)
### DNS API
```
PUT /dnszone/{zoneId}/records
Body: {
"Type": 0, // 레코드 타입 enum
"Name": "cdn",
"Value": "1.2.3.4",
"Ttl": 3600,
"Priority": 0,
"Accelerated": true,
"PullZoneId": 12345,
"AutoSslIssuance": true,
"MonitorType": 0, // 0-3
"SmartRoutingType": 0, // 0-2
"Comment": "CDN record"
}
Response: 201
```
### DNS 모니터링
Bunny DNS는 레코드 모니터링 기능 내장 (`MonitorType` 필드).
---
## 9. Origin Shield
### 개요
Origin Shield는 CDN 엣지 PoP와 Origin 사이의 **2차 캐싱 레이어**.
전 세계 여러 PoP에서 같은 파일 요청 시, Origin Shield가 단일 캐싱 포인트로 동작하여 Origin 트래픽을 대폭 감소.
### 설정 필드
| 필드 | 설명 |
|------|------|
| `EnableOriginShield` | Origin Shield 활성화 |
| `OriginShieldZoneCode` | Shield 위치 존 코드 |
| `OriginShieldEnableConcurrencyLimit` | 동시 요청 제한 |
| `OriginShieldMaxConcurrentRequests` | 최대 동시 요청 수 |
| `OriginShieldQueueMaxWaitTime` | 큐 최대 대기 시간 (ms) |
| `OriginShieldMaxQueuedRequests` | 최대 큐 요청 수 |
### 동작 방식
```
사용자 -> 엣지 PoP (1차 캐시) -> Origin Shield (2차 캐시) -> Origin 서버
```
- 엣지 PoP 캐시 미스 시, Origin 직접 요청 대신 Origin Shield에 요청
- Origin Shield에 캐시가 있으면 바로 응답
- Origin Shield도 캐시 미스면 Origin에 1회만 요청
---
## 10. WebSocket Support
### 설정
| 필드 | 타입 | 설명 |
|------|------|------|
| `EnableWebSockets` | boolean | WebSocket 프로토콜 연결 허용 |
| `MaxWebSocketConnections` | int32 | 최대 동시 WebSocket 연결 (500-25,000) |
---
## 11. Logging and Monitoring
### 로그 설정
| 필드 | 설명 |
|------|------|
| `EnableLogging` | 액세스 로깅 활성화 |
| `LogFormat` | `Plain` 또는 `JSON` |
| `LoggingIPAnonymizationEnabled` | IP 익명화 |
| `LogAnonymizationType` | `OneDigit` 또는 `Drop` |
| `LoggingSaveToStorage` | 로그를 Storage Zone에 저장 |
| `LoggingStorageZoneId` | 로그 저장 Storage Zone ID |
### Log Forwarding (실시간 로그 전송)
| 필드 | 설명 |
|------|------|
| `LogForwardingEnabled` | 로그 포워딩 활성화 |
| `LogForwardingHostname` | Syslog 엔드포인트 호스트 |
| `LogForwardingPort` | 포트 |
| `LogForwardingToken` | 인증 토큰 |
| `LogForwardingProtocol` | `UDP`, `TCP`, `TCPEncrypted`, `DataDog` |
| `LogForwardingFormat` | `Plain` 또는 `JSON` |
### Log Forwarding 특성
- Syslog RFC 5424 포맷
- 10-30초 딜레이
- UDP: 암호화 없음, 패킷 손실 가능
- TCP/TCPEncrypted: 안정적 전송
- DataDog 직접 연동 지원
### 보안/접근제어 관련 로깅
- WAF 로그: `GET /shield/event-logs/{shieldZoneId}`
- Pull Zone 통계: Statistics API
---
## 12. Pricing
### Monthly Minimum
**$1/월**
### Standard Network (119 PoPs)
| 지역 | 가격/GB |
|------|---------|
| Europe & North America | $0.01 |
| Asia & Oceania | $0.03 |
| South America | $0.045 |
| Middle East & Africa | $0.06 |
### Volume Network (10 PoPs)
| 구간 | 가격/GB |
|------|---------|
| 0 - 500 TB | $0.005 |
| 500 TB - 1 PB | $0.004 |
| 1 PB - 2 PB | $0.002 |
| 2 PB+ | 커스텀 (영업 문의) |
### 추가 서비스 가격
| 서비스 | 가격 |
|--------|------|
| Bunny Optimizer | $9.50/월 per Pull Zone |
| Bunny Shield | 별도 (보안 기능 통합) |
| Storage Zone | 별도 과금 |
| Stream | 별도 과금 |
### Pull Zone 설정으로 비용 제어
- `MonthlyBandwidthLimit`: 월간 대역폭 한도 (bytes)
- `BudgetRedirectedCountries`: 특정 국가를 저렴한 지역으로 리다이렉트
- 지역별 Geo Zone 활성화/비활성화로 과금 지역 제어
- 언제든 Standard <-> Volume 전환 가능
---
## 13. Security & Access Control (기타)
### Referrer/IP 제어
| 필드 | 설명 |
|------|------|
| `AllowedReferrers` | 허용 Referrer 호스트 목록 |
| `BlockedReferrers` | 차단 Referrer 호스트 목록 |
| `BlockNoneReferrer` | Referrer 없는 직접 접근 차단 |
| `BlockedIps` | IP 차단 목록 |
| `BlockedCountries` | 국가 코드 차단 (2자리) |
| `BlockRootPathAccess` | 루트 경로 접근 차단 |
| `BlockPostRequests` | POST 요청 차단 |
### Rate Limiting (Pull Zone 레벨)
| 필드 | 설명 |
|------|------|
| `ConnectionLimitPerIPCount` | IP당 최대 연결 수 |
| `RequestLimit` | 초당 최대 요청 |
| `LimitRatePerSecond` | IP별 초당 속도 제한 |
| `LimitRateAfter` | 속도 제한 전 전송량 |
| `BurstSize` | IP 차단 전 최대 버스트 |
### Token Authentication
- `ZoneSecurityEnabled`: URL 토큰 인증 활성화
- `ZoneSecurityIncludeHashRemoteIP`: 토큰에 원격 IP 포함
### CORS
- `EnableAccessControlOriginHeader`: CORS 헤더 활성화
- `AccessControlOriginHeaderExtensions`: CORS 적용 파일 확장자
### AWS S3 Origin 연동
- `AWSSigningEnabled`: AWS 요청 서명
- `AWSSigningKey`, `AWSSigningSecret`, `AWSSigningRegionName`
---
## 14. 기타 기능
### Perma-Cache
- `PermaCacheStorageZoneId`: 영구 캐시용 Storage Zone
- `PermaCacheType`: `Automatic` 또는 `Manual`
### Custom Error Pages
- `ErrorPageEnableCustomCode`: 커스텀 에러 페이지 HTML
- `ErrorPageCustomCode`: HTML 코드
- `ErrorPageWhitelabel`: 브랜딩 제거
### Preloading Screen
- `PreloadingScreenEnabled`: 로딩 화면 표시
- `PreloadingScreenTheme`: `Light` / `Dark`
- `PreloadingScreenDelay`: 표시 전 딜레이 (0-10,000ms)
- DDoS Challenge 등에서 사용
### Sticky Sessions
- `StickySessionType`: `Off` / `On`
- `StickySessionCookieName`: 세션 쿠키 이름
- `StickySessionClientHeaders`: 클라이언트 식별 헤더
### AI 기능
- `EnableBunnyImageAi`: AI 이미지 생성
- `BunnyAiImageBlueprints`: AI 이미지 블루프린트
---
## 참고 링크
- [API Reference](https://docs.bunny.net/reference/bunnynet-api-overview)
- [Pull Zone API](https://docs.bunny.net/reference/pullzonepublic_index)
- [Edge Rules Docs](https://docs.bunny.net/cdn/edge-rules)
- [Variable Expansion](https://docs.bunny.net/cdn/edge-rules/variable-expansion)
- [Bunny Shield](https://docs.bunny.net/docs/bunny-shield-documentation)
- [WAF](https://docs.bunny.net/docs/shield-waf)
- [DDoS Mitigation](https://docs.bunny.net/docs/shield-ddos-mitigation)
- [Rate Limiting](https://docs.bunny.net/shield/rate-limiting)
- [Log Forwarding](https://docs.bunny.net/cdn/logging/forwarding)
- [CDN Pricing](https://bunny.net/pricing/cdn/)
- [Optimizer Pricing](https://bunny.net/pricing/optimizer/)
- [Support Hub](https://support.bunny.net/hc/en-us/)