本日は、アプリケーションに OpenResty Edge の内蔵キャプチャを設定する方法をご紹介します。

OpenResty Edge の内蔵キャプチャ認証ページ

アプリケーションに OpenResty Edge の内蔵キャプチャを設定する

OpenResty Edge の内蔵キャプチャは、OpenResty Edge ゲートウェイサーバーから直接返されるキャプチャレスポンスです。

フロー図:OpenResty Edge ゲートウェイサーバーがバックエンドのオリジンサーバーを経由せず、ユーザーへ直接キャプチャページを返す

いつものように、OpenResty Edge の Admin Web コンソールにアクセスしましょう。これは私たちのコンソールのサンプルデプロイメントです。各ユーザーは独自のローカルデプロイメントを持っています。

OpenResty Edge Admin Web コンソール

引き続き、test-edge.com というアプリケーションを使用して OpenResty Edge の内蔵キャプチャ機能をデモンストレーションします。

アプリケーション一覧の test-edge.com アプリケーション

そのアプリケーションに入ります。

test-edge.com アプリケーションに入る

以前のチュートリアルで、すでにアップストリームを定義しています。

アプリケーションのアップストリーム一覧

この my_backend アップストリームは、バックエンドサーバーを定義しています。

my_backend アップストリームに定義されたバックエンドサーバー

ここにも、すでに定義されているページルールがあります。

アプリケーションの既存ページルール一覧

以前のチュートリアルでは、このページルールは先ほど見たアップストリームへのリバースプロキシを設定しました。

my_backend アップストリームへのリバースプロキシを設定したページルール

ここで、OpenResty Edge の内蔵キャプチャを有効にする新しいページルールを追加します。

内蔵キャプチャを有効にする新しいページルールを追加

このルールに条件を設定していないことに注意してください。これは、このルールが無条件でトリガーされることを意味します。

条件なしのページルールは無条件でトリガーされる

新しいアクションを追加します。

ページルールに新しいアクションを追加

「captcha」と入力して検索します。

「captcha」でアクションを検索

「Enable OpenResty Edge Built-in Captcha」オプションを選択します。

「Enable OpenResty Edge Built-in Captcha」アクションを選択

クライアントがキャプチャ認証を通過すると、OpenResty Edge は指定された期間、同じクライアントからのすべてのリクエストを許可します。この期間は clearance time と呼ばれます。キャプチャは cookie を使用して認証情報を記録します。

内蔵キャプチャの clearance time 設定項目

この時間を 10 秒に設定します。

clearance time を 10 秒に設定

このルールを最上位に移動して、優先的に実行されるようにします。これはデモンストレーションを容易にするためです。任意の順序に設定することもできます。このルールを保存します。

キャプチャのページルールを保存

いつものように、編集したページルールをプッシュするために新しい設定をリリースする必要があります。

編集したページルールをプッシュするために新しいリリースを作成

このボタンをクリックします。

リリースボタンをクリック

リリースします!

新しいリリースを配信

完全に同期されました。

設定が完全に同期された

これで、新しいページルールがすべてのゲートウェイクラスターとサーバーにプッシュされました。

設定同期アニメーション:更新パケットが Edge Admin サーバーから送出される

設定同期アニメーション:更新パケットが Edge Admin サーバーから各ゲートウェイノードへ流れる

設定同期アニメーション:更新パケットが各 Edge ノードサーバーに到達する

設定の変更にはサーバーのリロード、再起動、またはバイナリのアップグレードが不要です。そのため、非常に効率的でスケーラブルです。

OpenResty Edge の設定変更はサーバーのリロード・再起動・バイナリアップグレード不要

テスト

このドメインにアクセスしてみましょう。OpenResty Edge の内蔵キャプチャページが表示され、オリジンサーバーのコンテンツは表示されません。

アプリケーションが OpenResty Edge の内蔵キャプチャページを返す

キャプチャを入力します。

内蔵キャプチャページでキャプチャコードを入力

これで、この URI が期待したコンテンツが表示されます。先ほど clearance time を 10 秒に設定したことに注意してください。これは、10 秒間はキャプチャなしでこのドメインにアクセスできることを意味します。

キャプチャ認証通過後にオリジンのコンテンツが表示される

10 秒後には、再度認証が必要になります。

clearance time の経過後は再度キャプチャ認証が必要になる

アクションでキャプチャを設定するだけでなく、WAF ルールでもキャプチャを設定できます。WAF ルールの具体的な機能については、別のビデオでデモンストレーションします。

OpenResty Edge のページルールメニューに移動

ここでは、WAF ルールで OpenResty Edge の内蔵キャプチャを設定する方法を簡単に見てみましょう。

ページルール一覧でキャプチャルールを編集

WAF を有効にします。

ルール編集ダイアログの WAF スイッチ

ここでは、block action を OpenResty Edge の内蔵キャプチャに設定できます。

ページルールの WAF 設定にある Block Action オプション(キャプチャ選択前)

内蔵キャプチャオプションを選択します。

WAF のブロックアクションとして内蔵キャプチャオプションを選択

WAF のブロックアクションが内蔵キャプチャに設定された

先ほどアクションを設定したときと同様に、ここでも clearance time を設定する必要があります。ここでは詳細なデモンストレーションは省略します。詳細については、WAF ルールに関連するビデオをご覧ください。

WAF ルールでキャプチャの clearance time を設定

ちなみに、サードパーティのキャプチャサービスである hCaptcha もサポートしています。この機能の詳細については、OpenResty Edge hCaptcha のチュートリアルをご覧ください。

よくある質問(FAQ)

OpenResty Edge の内蔵キャプチャの clearance time とは何ですか?

clearance time とは、クライアントがキャプチャ認証を通過した後、OpenResty Edge が同じクライアントからのすべてのリクエストをキャプチャなしで許可する期間のことです。認証情報は cookie で記録されます。clearance time が経過すると、クライアントは再度認証する必要があります。

内蔵キャプチャの有効化にバックエンドの変更やサーバーの再起動は必要ですか?

不要です。キャプチャレスポンスは OpenResty Edge ゲートウェイサーバーから直接返されるため、バックエンドアプリケーションの変更は一切不要です。新しいページルールのリリースにも、サーバーのリロード、再起動、バイナリアップグレードは必要ありません。

内蔵キャプチャを WAF のブロックアクションとして使用できますか?

できます。ページルールのアクションとして有効にするだけでなく、ページルール内で WAF を有効化し、その block action を OpenResty Edge の内蔵キャプチャに設定できます。同様に clearance time の設定が必要です。

内蔵キャプチャと hCaptcha の違いは何ですか?

内蔵キャプチャは OpenResty Edge ゲートウェイ自身が生成して直接返すもので、サードパーティサービスに依存しません。hCaptcha は OpenResty Edge が同様にサポートするサードパーティのキャプチャサービスです。設定方法は hCaptcha 設定チュートリアルをご覧ください。

OpenResty Edge について

OpenResty Edge は、マイクロサービスと分散トラフィックアーキテクチャ向けに設計された多機能ゲートウェイソフトウェアで、当社が独自に開発しました。トラフィック管理、プライベート CDN 構築、API ゲートウェイ、セキュリティ保護などの機能を統合し、現代のアプリケーションの構築、管理、保護を容易にします。OpenResty Edge は業界をリードする性能と拡張性を持ち、高同時接続・高負荷シナリオの厳しい要求を満たすことができます。K8s などのコンテナアプリケーショントラフィックのスケジューリングをサポートし、大量のドメイン名を管理できるため、大規模ウェブサイトや複雑なアプリケーションのニーズを容易に満たすことができます。

著者について

章亦春(Zhang Yichun)は、オープンソースの OpenResty® プロジェクトの創始者であり、OpenResty Inc. の CEO および創業者です。

章亦春(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しております。彼は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」 の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っております。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、彼は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立いたしました。同社の主力製品である OpenResty XRay動的トレーシング技術を利用した非侵襲的な障害分析および排除ツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ております。OpenResty 以外にも、章亦春は Linux カーネル、Nginx、LuaJITGDBSystemTapLLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを寄与し、60 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!