Conversation
커스텀 도메인에서 같은 Worker로 self-fetch 시 522가 발생하는 Cloudflare 제한을 global_fetch_strictly_public 플래그로 해제 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
github | 1d09416 | Commit Preview URL | Apr 17 2026, 02:58 PM |
트러블슈팅1. 문제 상황PR 이벤트 발생 시 AI 분석 댓글(패턴 태깅 / 학습 현황 / 복잡도 분석)이 작성되지 않는 현상. Cloudflare Workers 로그에서 디스패치된 2. 에러 로깅 추가로 원인 식별기존 디스패치 코드는 const res = await fetch(`${baseUrl}/internal/complexity-analysis`, { ... });
if (!res.ok) {
const text = await res.text().catch(() => "");
console.error(`[dispatch] complexityAnalysis HTTP ${res.status}: ${text}`);
}로그에서 HTTP 522 (Connection timed out) 확인. 3. 첫 시도 — 환경변수 동기화
대시보드 값을 수정해 양쪽을 일치시켰음 (3f29950). 그러나 522는 계속 발생. 도메인 문제가 아니라 Cloudflare 플랫폼 동작에 원인이 있다고 판단. 4. 522 발생 원인 — Cloudflare self-fetch 동작참고: Cloudflare 522 공식 문서 — 522는 Cloudflare 엣지가 오리진 서버에 TCP 연결을 수립하지 못했을 때 반환됨. 현재 구조는 Worker가 자기 자신의 커스텀 도메인( Cloudflare 기본 동작에서는 Worker가 같은 존(zone)의 호스트로 fetch할 때 내부 루프백으로 라우팅을 최적화함. 이 경로에서 다음과 같은 제약이 발생함:
오리진(자기 자신)이 실제로는 가용한 상태였지만, Cloudflare의 루프백 최적화 정책에 의해 연결이 거부되는 상황이었음. 5. `global_fetch_strictly_public` 플래그 적용wrangler.jsonc:5에 호환성 플래그 추가: {
"compatibility_flags": ["global_fetch_strictly_public"]
}이 플래그는 Worker에서 발생하는 모든
플래그 활성화 후 self-fetch는 퍼블릭 엣지를 경유하는 외부 요청으로 처리되어, 엣지가 해당 Worker를 새로운 invocation으로 부팅함. 각 invocation은 독립된 subrequest 예산을 가지며, 이것이 엔드포인트별 예산 분리 구조의 전제 조건임. 배포 후 정리
|
|
@devchanki @lkhoony 공유 감사합니다!! 👍🏻 |
커스텀 도메인에서 같은 Worker로 self-fetch 시 522가 발생하는
Cloudflare 제한을 global_fetch_strictly_public 플래그로 해제