---
type: explanation
title: 리버스 프록시에서 사이트 전체에 게이트를 겁니다
summary: 프록시 게이트가 무엇이고, 누구를 위한 것이며, 방문자가 게임 하나를 풀어 요청을 통과시키는 짧은 수명의 패스를 얻는 방식. 위젯을 삽입할 수 없는 앱을 보호합니다.
---

Caputchin을 쓰는 보통 방식은 페이지에 [위젯](/docs/site-keys/embedding-the-widget)을 삽입하고 토큰을 백엔드에서 검증하는 것입니다. 그러려면 위젯을 둘 자리와 토큰을 확인할 백엔드가 필요합니다. 프록시 게이트는 둘 다 필요 없습니다. 그것은 당신의 **리버스 프록시**에서, 사이트나 라우트 전체 앞에 전면 검증을 놓습니다. 방문자가 게임 하나를 풀고, 짧은 수명의 패스를 얻고, 패스가 만료될 때까지 사이트를 돌아다닙니다. 보호되는 앱은 결코 건드려지지 않습니다.

앱 자체에는 아무것도 더해지지 않으므로, 이것은 스크립트를 삽입할 수 없는 호스트를 보호하는 방법입니다. 컴파일된 단일 페이지 로그인 포털, 어플라이언스, 또는 인증 프록시 뒤에 앉은 내부 도구 같은 것입니다.

<Callout type="info">
프록시 게이트는 Alpha 플랜 이상에서 제공되며, 사이트 키별로 활성화합니다. Caputchin이 챌린지를 호스팅하고 패스를 발급하며, 당신은 기존 리버스 프록시(nginx, Traefik, Caddy, 또는 당신의 앱 앞에 서는 무엇이든)를 그것으로 향하게 합니다.
</Callout>

## 누구를 위한 것인가

인라인 위젯이 맞지 않을 때 게이트로 손을 뻗으세요:

- **앱에 위젯을 둘 자리가 없음.** 봉인된 로그인 포털(Authelia 같은), 벤더 어플라이언스, 또는 편집할 수 없는 어떤 UI든.
- **폼 하나가 아니라 표면 전체에 게이트를 걸고 싶음.** 단일 제출에서의 확인이 아니라 "이 사이트에 닿기 전에 당신이 사람임을 증명하라".
- **토큰을 검증할 백엔드가 없음.** 강제하는 건 프록시이고, 쓸 `/siteverify` 호출이 없습니다.

당신이 통제하는 보통 페이지나 폼이라면, 대신 [위젯](/docs/site-keys/embedding-the-widget)을 삽입하세요. 그게 더 가볍고 방문자를 리디렉션하지 않습니다. 폼은 있지만 백엔드가 없다면, [호스팅 인증](/docs/hosted-verification/overview)이 더 잘 맞습니다.

## 동작 방식

한 번의 풀이가 많은 요청을 삽니다. 방문자는 게임을 한 번 하고, 그다음에는 퍼스트파티 쿠키가 만료될 때까지 그의 요청을 통과시킵니다.

```mermaid
sequenceDiagram
    participant V as 방문자
    participant P as 당신의 리버스 프록시
    participant C as Caputchin
    V->>P: 게이트된 URL 요청
    P->>C: authz 확인 (cpt_gate 쿠키 전달)
    C-->>P: 401, 아직 유효한 패스 없음
    P-->>V: 302로 호스팅 챌린지로
    V->>C: 게임을 함
    C-->>V: 패스, 당신의 콜백으로 auto-POST
    V->>P: 패스를 /__cpt/callback으로 POST
    P-->>V: cpt_gate 쿠키 설정, 되돌아가게 리디렉션
    V->>P: 다시 요청 (쿠키 있음)
    P->>C: authz 확인
    C-->>P: 204 허용
    P-->>V: 당신의 앱이 응답
```

프록시는 모든 요청에서 Caputchin에 작은 **인가자** 호출을 합니다. 요청이 유효한 패스를 지니지 않으면, Caputchin은 `401`을 답하고 프록시는 방문자를 호스팅 챌린지로 리디렉션합니다. 패스가 있고 유효하면, Caputchin은 `204`를 답하고 프록시는 요청을 당신의 앱으로 통과시킵니다.

## 통과 쿠키

패스는 `cpt_gate`라는 이름의 퍼스트파티 쿠키 안에 살며, 그것은 당신이 호스팅하는 작은 콜백이 당신 자신의 도메인에 설정합니다. 서명된 짧은 수명의 토큰이고, 기기에 묶이지 않으므로, 그 안전성은 전적으로 쿠키 속성(`HttpOnly`, `Secure`, `SameSite=Lax`)과 당신이 고르는 짧은 TTL에서 옵니다. 그것이 당신의 방문자에게 쿠키를 설정하니, 당신의 쿠키 정책에 그것을 고지하세요. [설정 가이드](/docs/proxy-page-gate/set-up)가 콜백과 필요한 속성을 처음부터 끝까지 짚습니다.

## 일부러 빠뜨린 것

- **자체 호스팅 게이트 없음.** Caputchin이 챌린지를 호스팅하고 패스를 검증합니다. 당신은 검증기를 돌리지 않습니다. 당신의 프록시는 쿠키 하나를 전달하고 리디렉션을 따를 뿐입니다.
- **요청별 확인이지, 로컬 토큰 검증이 아님.** 프록시는 모든 요청에서 Caputchin에 묻습니다. 당신이 고르는 **실패 모드**(열림 또는 닫힘)가 Caputchin이 잠깐 닿을 수 없을 때 무슨 일이 일어날지 결정합니다.
- **사이트 키별, 쿠키 범위의 통과.** 한 패스는 하나의 오리진을 통과시키지, 계정 전체나 여러 도메인은 아닙니다. 그것은 평범한 퍼스트파티 쿠키이기 때문입니다.
- **세션도 로그인도 아님.** 게이트는 사람이 사이트에 닿았음을 증명합니다. 당신의 앱은 여전히 인증과 자체 속도 제한을 처리합니다. 둘은 겹칩니다.

## 함께 보기

- [프록시 게이트 설정하기](/docs/proxy-page-gate/set-up): 활성화하고 당신의 프록시를 끝에서 끝까지 배선합니다.
- [리버스 프록시 레시피](/docs/proxy-page-gate/reverse-proxy-recipes): nginx, Traefik, Caddy, 그리고 Authelia 실전 예시.
- [프록시 게이트 통계](/docs/proxy-page-gate/statistics): 통과 대 챌린지 비율을 읽습니다.
- [호스팅 인증](/docs/hosted-verification/overview): 향할 폼이 실제로 있을 때의 백엔드 없는 선택지.
