VercelにデプロイしたアプリケーションをCloudflareでプロキシする
Vercel にデプロイしたアプリケーションに対して、Cloudflare の WAF や CDN、Cloudflare Access といった機能を活用したい場合、Cloudflare をリバースプロキシとして前段に配置する構成が考えられます。
しかし、そのまま設定を進めると Vercel のドメイン認証でエラーが発生することがあります。この記事では、その原因と解決方法をまとめます。
Vercel 公式の立場:リバースプロキシは非推奨
はじめに、Vercel の公式ドキュメントでは Vercel の前段にリバースプロキシを配置することは推奨されていません。
理由として、以下の影響が挙げられています。
- Vercel の CDN がトラフィックの詳細を把握できなくなり、ファイアウォールによる不審なアクセスの検知精度が下がる
- エンドユーザーの実際の IP アドレスを正確に識別できなくなる
- リバースプロキシがDDoS等の攻撃を受けた場合、そのトラフィックが Vercel プロジェクトに転送されてしまう
- プロキシが侵害された場合、Vercel のファイアウォールがキャッシュを自動的にパージできなくなる
ただし、Cloudflare は Vercel の「Verified Proxy」として公式にサポートされているプロバイダーの一つです。Cloudflare を経由する場合、CF-Connecting-IP ヘッダーによってエンドユーザーの IP アドレスが Vercel に伝達されるため、上記の一部の影響は軽減されます。
この記事では、上記のリスクを理解した上で、それでも以下の理由から Cloudflare を前段に置く構成をとりたい場合の手順を説明します。
- Cloudflare WAF による独自のルールでのアクセス制御
- Cloudflare CDN を使ったコンテンツ配信
- Cloudflare Access による認証・アクセス制御(特定のユーザーやグループのみアクセス許可するなど)
Cloudflare のプロキシ設定
Cloudflare DNS でドメインを管理している場合、DNS レコードの「プロキシ」設定(オレンジクラウド)を有効にすることで、Cloudflare をリバースプロキシとして機能させることができます。
これにより、以下のような Cloudflare の機能をそのまま利用できます。
- WAF(Web Application Firewall)による不正アクセスのブロック
- CDN によるコンテンツキャッシュと高速配信
- Cloudflare Access による認証・アクセス制御

Vercel のドメイン認証で起きること
Vercel でカスタムドメインを設定する際、Vercel 側でドメインの所有確認と TLS 証明書の発行が行われます。この証明書の発行には ACME プロトコルが使われており、HTTP チャレンジとして以下のパスへの疎通確認が発生します。
http://<your-domain>/.well-known/acme-challenge/*
このとき、Cloudflare のプロキシが有効になっていると、HSTS などの設定によってリクエストが自動的に HTTPS にリダイレクトされます。その結果、HTTP チャレンジが成立せず、証明書の発行に失敗してドメイン認証がエラーになります。
プロキシを無効(グレークラウド)にすれば認証は通りますが、それでは Cloudflare の WAF や CDN が機能しなくなってしまいます。
解決策:Cloudflare の構成ルールで特定パスのみ SSL を無効化する
Cloudflare の「構成ルール(Configuration Rules)」を使って、ACME チャレンジのパスに対してのみ HTTPS へのリダイレクトと SSL を無効化します。
Cloudflare ダッシュボードから セキュリティ > 構成ルール を開き、新しいルールを作成します。
マッチ条件
(starts_with(http.request.uri.path, "/.well-known/acme-challenge"))
設定内容
| 項目 | 値 |
|---|---|
| SSL | オフ |
| HTTPS の自動リライト | オフ |

このルールを保存した後、Vercel のドメイン設定からドメイン認証を再試行すると、正常に証明書が発行されてドメインが有効になります。
まとめ
Cloudflare のプロキシを有効にした状態のまま Vercel のドメイン認証を通すには、ACME チャレンジのパス(/.well-known/acme-challenge/*)に対してのみ SSL と HTTPS リダイレクトを無効化する構成ルールを追加するのが有効です。
この設定によって、Cloudflare の WAF や CDN、Cloudflare Access を維持しながら Vercel のドメイン認証を正常に完了させることができます。