페이지 규칙
조건에 일치하는 URL에 대해 캐싱, 요청 속도 제한, 응답 헤더, 원본 SSL, 리디렉션 설정을 재정의합니다.
페이지 규칙을 사용하면 특정 조건을 충족하는 URL을 다른 방식으로 처리할 수 있습니다. 예를 들어 정적 자산을 더 오래 캐시하거나, 관리 영역의 캐싱을 끄거나, 기존 경로를 새 주소로 리디렉션할 수 있습니다.
CDN → CDN 도메인으로 이동하여 도메인을 연 다음 페이지 규칙을 선택합니다. 콘솔 URL은 /cdn/domains/<domain>/rules입니다.
일부 페이지 규칙 동작은 아직 순차적으로 제공되고 있습니다. 이 페이지에는 현재 에지에서 적용되는 동작만 나열되어 있습니다. 콘솔에는 다른 옵션도 표시되지만 저장해도 아직 적용되지 않습니다.
규칙의 구성 요소
| 필드 | 설명 |
|---|---|
| 이름 | "정적 자산 캐싱"과 같이 규칙을 식별하기 위한 레이블입니다 |
| 우선순위 | 1부터 999까지이며 기본값은 100입니다 |
| 활성화 | 비활성화된 규칙은 유지되지만 적용되지 않습니다 |
| 조건 | 모두 일치(AND) 또는 **하나 이상 일치(OR)**로 연결한 하나 이상의 조건입니다 |
| 동작 | 요청이 일치할 때 적용할 하나 이상의 동작입니다 |
URL 일치 조건
페이지 규칙은 방화벽 규칙과 같은 조건 엔진을 사용합니다. 다음은 URL 조건을 지정할 때 가장 많이 사용하는 필드와 연산자입니다.
| 필드 | 예시 |
|---|---|
| 경로 / URI 경로 | 다음으로 시작 /static/; 정규 표현식 ^/blog/\d+ |
| 파일 확장자 | 목록에 포함 jpg, png, css, js |
| Host | 같음 img.example.com(도메인에 호스트 이름이 여러 개 있는 경우 유용합니다) |
| 쿼리 문자열 | 매개변수 이름 utm_source, 연산자 존재함 |
| 헤더 / 쿠키 | 이름을 지정한 다음 값을 비교합니다 |
| HTTPS 여부, HTTP 메서드, 클라이언트 IP, 국가 코드, ASN, User-Agent, Referer | 요청 속성으로 일치 범위를 좁힙니다 |
사용 가능한 연산자는 같음, 같지 않음, 포함, 포함하지 않음, 다음으로 시작, 다음으로 끝남, 정규 표현식, 목록에 포함, 목록에 포함되지 않음, 초과/미만(또는 이상/이하), 존재함, 존재하지 않음입니다.
경로 일치 조건은 대소문자를 구분합니다. 디렉터리를 지정하려면 다음으로 시작을 사용합니다. 정규 표현식보다 명확하고 올바르게 설정하기 쉽습니다.
적용되는 동작
| 동작 패널 | 적용되는 설정 | 동작 설명 |
|---|---|---|
| 캐시 | 캐시 모드 비활성화; 캐시 시간(seconds) | 비활성화는 일치하는 요청이 에지 캐시를 우회하도록 합니다. 캐시 시간을 지정하면 캐시 가능한 응답의 에지 캐시 TTL을 대체합니다. Set-Cookie 또는 no-store가 있는 응답처럼 캐시할 수 없는 응답은 여전히 캐시되지 않습니다 |
| 요청 제한 | 요청 수, 집계 기간(seconds), 키(IP 주소, 국가 또는 URI 경로) | 한도를 초과한 요청에 429를 반환합니다. 헤더나 쿠키를 기준으로 요청 속도를 제한하려면 방화벽 규칙을 사용합니다 |
| WAF | 끄기 스위치 | 일치하는 요청의 WAF 검사를 건너뜁니다. 신뢰할 수 있는 콜백 URL에 유용합니다. 여기서 규칙 세트를 선택해도 적용되지 않습니다 |
| 사용자 지정 헤더 | 이름 및 값 | HTTP 응답 헤더를 추가하거나 대체합니다 |
| SSL/TLS | 원본 SSL 모드; HTTPS 강제 적용(클라이언트) | 해당 URL에 대해 원본 서버에 연결할 때 사용하는 SSL 모드를 변경합니다(끄기, 유연, 전체 또는 엄격). HTTPS 강제 적용을 켜면 HTTP 요청을 301로 동일한 URL의 HTTPS 주소로 리디렉션합니다 |
| 리디렉션 | 대상 URL 및 상태 코드(301, 302, 307 또는 308) | 원본 서버에 연결하지 않고 고정된 대상 URL로 리디렉션하는 응답을 반환합니다 |
다음 설정은 아직 적용되지 않습니다. 대신 도메인의 각 해당 페이지에서 구성합니다.
- 캐시 패널: 캐시 시간 모드, 쿼리 문자열 처리, 캐시 호스트 모드, 기기·국가·언어별 캐시 구분, 만료된 콘텐츠 제공입니다. 캐시 페이지에서 설정합니다.
- 아직 순차적으로 제공 중인 브라우저 캐시 패널입니다. 브라우저 캐싱은 캐시 페이지에서 설정합니다.
- 최적화 패널(Gzip, Brotli 및 코드 축소)입니다. 최적화 페이지에서 설정합니다.
규칙 생성
- 페이지 규칙에서 규칙 추가를 클릭합니다.
- 이름을 입력하고 필요하면 우선순위를 변경한 다음 활성화를 켜 둡니다.
- 일치 조건에서 조건을 추가하고 모두 일치 또는 하나 이상 일치를 선택합니다.
- 실행 동작에서 사용할 각 동작 패널의 활성화를 클릭하고 설정을 입력합니다. 패널을 제외하려면 제거를 클릭합니다.
- 확인을 클릭하여 저장합니다. 규칙은 수초에서 1분 내에 에지에 적용됩니다.
규칙을 저장하려면 조건과 동작이 각각 하나 이상 있어야 합니다.
예시: 정적 자산을 7 days 동안 캐시
- 조건: 파일 확장자가 목록에 포함
jpg,png,css,js - 동작: 캐시, 모드 활성화, 캐시 시간
604800
예시: 관리 영역을 캐시하지 않음
- 조건: 경로가 다음으로 시작
/admin - 동작: 캐시, 모드 비활성화
여러 규칙이 일치하는 경우
하나의 요청이 여러 페이지 규칙과 일치할 수 있으며, 일치하는 모든 규칙의 동작이 함께 적용됩니다. 리디렉션 또는 HTTPS 강제 적용은 처리를 즉시 종료하므로 이후 규칙은 실행되지 않습니다.
서로 다른 두 캐시 시간처럼 같은 URL에 대해 서로 충돌하는 값을 여러 규칙에 지정하지 마십시오. 조건이 겹치지 않도록 하거나 해당 규칙들을 하나로 합칩니다.
규칙 할당량
요금제에 따라 생성할 수 있는 페이지 규칙 수가 제한될 수 있습니다. 제한이 있으면 페이지 상단 배너에 "규칙 한도: 3/5"와 같이 사용량이 표시됩니다. 한도에 도달하면 더 이상 필요하지 않은 규칙을 삭제하거나 요금제를 업그레이드합니다.
API
페이지 규칙 엔드포인트는 /api/user/cdn/rules 아래에 있습니다.
curl -X POST "https://api.yeap.cloud/api/user/cdn/rules/create" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"domain_id": 123,
"name": "Static assets 7d",
"priority": 100,
"enabled": true,
"settings": {
"matcher": {"op": "and", "conditions": [
{"collection": "EXTENSION", "op": "in", "var": ["jpg", "png", "css", "js"]}
]},
"action": {"cache": {"enabled": "on", "ttl": 604800}}
}
}'기타 엔드포인트:
- 규칙 목록 조회:
GET /api/user/cdn/rules?domain_id=123 - 규칙 업데이트:
POST /api/user/cdn/rules/update, 본문에id포함 - 규칙 삭제:
DELETE /api/user/cdn/rules/delete?id=<id>