---
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) のほうが合います。

## どう動くか

一度の解答が多くのリクエストを買います。訪問者はゲームを一度遊び、その後はファーストパーティ Cookie が、切れるまでそのリクエストを通します。

```mermaid
sequenceDiagram
    participant V as 訪問者
    participant P as あなたのリバースプロキシ
    participant C as Caputchin
    V->>P: ゲート付き URL を要求する
    P->>C: authz チェック（cpt_gate Cookie を転送）
    C-->>P: 401、まだ有効なパスなし
    P-->>V: 302 でホスト型チャレンジへ
    V->>C: ゲームを遊ぶ
    C-->>V: パス、あなたのコールバックへ auto-POST
    V->>P: パスを /__cpt/callback へ POST
    P-->>V: cpt_gate Cookie をセット、戻りへリダイレクト
    V->>P: 再度要求（Cookie あり）
    P->>C: authz チェック
    C-->>P: 204 許可
    P-->>V: あなたのアプリが応答する
```

プロキシはリクエストごとに、Caputchin へ小さな **オーソライザー** 呼び出しをします。リクエストが有効なパスを持たないとき、Caputchin は `401` を返し、プロキシは訪問者をホスト型チャレンジへリダイレクトします。パスが在って有効なとき、Caputchin は `204` を返し、プロキシはリクエストをあなたのアプリへ通します。

## 通過許可 Cookie

パスは `cpt_gate` という名のファーストパーティ Cookie に住み、それはあなたがホストする小さなコールバックが、あなた自身のドメインにセットします。署名付きで短命のトークンで、デバイスに紐づかないため、その安全性はまるごと Cookie の属性（`HttpOnly`、`Secure`、`SameSite=Lax`）と、あなたが選ぶ短い TTL から来ます。訪問者に Cookie をセットするので、Cookie ポリシーで開示してください。[設定ガイド](/docs/proxy-page-gate/set-up) がコールバックと必要な属性を通しで説明します。

## あえて省いているもの

- **セルフホストのゲートなし。** Caputchin がチャレンジをホストしパスを検証します。あなたは検証器を動かしません。あなたのプロキシは Cookie を転送し、リダイレクトに従うだけです。
- **リクエストごとのチェックで、ローカルなトークン検証ではない。** プロキシはリクエストごとに Caputchin へ尋ねます。あなたが選ぶ **フェイルモード**（オープンかクローズド）が、Caputchin が短時間到達できないときに何が起きるかを決めます。
- **サイトキーごと、Cookie スコープの通過許可。** パスは一つのオリジンを通し、アカウント全体や複数ドメインは通しません。それは普通のファーストパーティ Cookie だからです。
- **セッションでもログインでもない。** ゲートは人間がサイトに達したことを証明します。あなたのアプリは相変わらず認証と自分のレート制限を担います。二つは重なります。

## あわせて読む

- [プロキシゲートを設定する](/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)：向ける先のフォームが実際にある場合の、バックエンドなしの選択肢。
