# 도메인과 엣지

```
list_domains          연결한 도메인, 확인 상태, 인증서
add_domain            연결 (target: site | api, branch, pair_www, *.example.com)
remove_domain         연결 해제
set_domain_redirect   다른 도메인으로 넘기기 / 다시 사이트 열기
move_domain                 도메인을 소유 확인·인증서 그대로 같은 조직의 다른 프로젝트로 옮기기(TXT 새로 안 넣어요)
get_edge              방화벽·요청 한도 보기
set_edge              IP 차단·허용, 분당 요청 한도, 범위(all | site | api)
purge_edge_cache      엣지에 저장된 응답 버리기
get_network           받는 주소(A 레코드), 고정 아웃바운드 IP
set_static_outbound_ip 고정 아웃바운드 IP 켜기·끄기 (유료, Pro 이상)
```

- 연결한 뒤 돌려받은 TXT 레코드(_blackwall.<도메인>)를 DNS에 넣어야 확인돼요. 트래픽은 그다음 A 레코드로 옮겨요.
- target=api인 도메인은 <ref>.<zone>과 똑같이 데이터·인증·스토리지·실시간으로 답해요.
- `set_domain_redirect`의 to는 도메인이나 도메인/경로예요(REST: `PUT /v1/projects/<ref>/domains/<도메인>/redirect {to, status}`). 경로를 붙이면 방문한 경로가 그 뒤에 붙고 질의 문자열은 그대로 따라가요: to=example.com/vision이면 vision.example.com/x?y=1 → example.com/vision/x?y=1, 첫 화면은 example.com/vision. 응답 코드는 308(기본)·307·301·302. to의 도메인은 이 프로젝트에 연결한, 리디렉트가 아닌 도메인이어야 해요.
- 인증서는 첫 방문 때 자동으로 받아요. 직접 가진 인증서는 `upload_certificate`(PEM 체인과 개인 키)로 올리고, `remove_certificate`로 자동 발급으로 돌아가요. 소유자·관리자만 할 수 있어요.
- 엣지 캐시는 서버 배포가 `Cache-Control: s-maxage=N`으로 허락한 응답만 저장해요.
- A 레코드에 넣을 주소는 `get_network`의 inbound예요.
- 서버 배포, 함수의 fetch(), 데이터베이스 웹훅이 외부로 보내는 요청의 주소는 기본으로 **공유 주소라 예고 없이 바뀔 수 있어요.** 허용 목록에 넣지 마세요. 결제대행사나 데이터베이스 방화벽처럼 허용 목록이 필요하면 유료 부가 서비스인 고정 아웃바운드 IP를 `set_static_outbound_ip`로 켜고(Pro 이상, 소유자·관리자·결제 담당), `get_network`의 outbound.addresses를 모두 등록하세요. 이 주소를 바꿀 때에는 30일 전에 메일로 알려요.

## 방화벽 규칙

규칙은 초안에 쌓이고 `publish_firewall`로 게시해야 적용돼요. 공격 챌린지 모드만 바로 적용돼요.

```
get_firewall                초안, 게시된 버전, 바뀐 것(changes), 공격 모드, 버전 기록
save_firewall_rule          규칙 저장 (groups: 조건 묶음, action: deny | challenge | rate_limit …)
move_firewall_rule          규칙 순서 (up | down)
set_firewall_rule_enabled   규칙 켜기·끄기
remove_firewall_rule        규칙 삭제
set_firewall_managed        봇, AI 학습 크롤러, AI 검색·답변 봇, 공격 패턴 (off | log | deny)
publish_firewall            초안을 새 버전으로 게시
reset_firewall_draft        게시하지 않은 변경 버리기
restore_firewall_version    이전 버전을 초안으로 불러오기
set_attack_mode             공격 챌린지 모드 (hours 뒤 저절로 꺼짐)
```

소유자·관리자만 바꿀 수 있어요. 규칙 편집은 무료 요금제에 없어요.

## 라우팅 규칙, 대량 리디렉트, 스큐 보호

```
get_routing_rules           콘솔에서 정한 리디렉트·리라이트·헤더 규칙의 버전들
save_routing_rules          blackwall.json 모양의 규칙을 새 버전으로 저장·적용
activate_routing_rules      이전 버전 적용, null이면 끄기
get_bulk_redirects          올린 대량 리디렉트 버전과 처음 100줄
upload_bulk_redirects       CSV로 새 버전 올리기 (1만 줄, activate)
activate_bulk_redirects     버전 하나 적용, null이면 끄기
purge_edge_cache_item       경로 하나(/blog/*)나 Cache-Tag 하나만 캐시에서 버리기
get_skew_protection         스큐 보호와 최대 유지 기간
set_skew_protection         스큐 보호 켜기·끄기, 최대 유지 기간
```

라우팅 규칙은 각 배포의 blackwall.json보다 먼저 적용돼요. 바꾸기는 소유자·관리자만, 캐시 일부 비우기는 개발자 이상이 할 수 있어요.

---

https://end.blackall.ai/docs/domains?lang=ko
