このチュートリアルでは、OpenResty Edge の Web コンソールでカスタムエラーページを設定する方法をご紹介します。

カスタムテンプレートの作成

本日は、OpenResty Edge でカスタムテンプレートを使用してエラーページを作成する方法をデモンストレーションいたします。まずはコンソールにアクセスしましょう。こちらが私たちのコンソールのサンプルデプロイメントです。各ユーザーには独自のデプロイメントがあります。

Screenshot

まず、「Global Config」をクリックします。

Screenshot

次に、「Global Page Templates」ページに移動します。ここでは、エラーページや WAF ブロックページをカスタマイズできるグローバルページテンプレートを作成できます。

Screenshot

ここで、このボタンをクリックして簡単なテンプレートを追加できます。

Screenshot

ここでテンプレートに error-page-template-demo という名前を付けます。

Screenshot

HTML の内容については、いくつかの事前定義された変数を使用してカスタマイズできます:

Screenshot

例えば「CLIENT_IP」、

Screenshot

「CLIENT_COUNTRY」、

Screenshot

そして「HOST」などです。

Screenshot

ここでクライアントの IP アドレスを出力できます。

Screenshot

また、例としてリクエスト ID と user agent も出力できます。

Screenshot

そして保存をクリックします。

Screenshot

これはグローバル設定であるため、このページテンプレートへの変更は即座に公開され、すべてのゲートウェイサーバーに同期されます。

Screenshot

テンプレートの適用

次に、サンプルアプリケーションに移動します:

Screenshot

そして test-edge.com を検索し、ページテンプレートをカスタムエラーページとして適用します。

Screenshot

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

Screenshot

そして「Page Rules」ページに移動します。

Screenshot

「New Rules」をクリックします。

Screenshot

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

Screenshot

ここでアクションタイプを選択または検索できます。

Screenshot

「customize error page」を検索します。

Screenshot

ここでは、エラーページに対応する HTTP レスポンスステータスコードを選択できます。

Screenshot

ここでは「404」のみを選択します。

Screenshot

カスタムエラーページを設定する方法はいくつかあります。例えば、生の HTML、バックエンド URL、または以前にアップロードしたグローバル静的ファイルを使用する方法があります。

Screenshot

ここでは、先ほど定義した「error-page-template-demo」という名前のグローバルページテンプレートを使用することを選択します。

Screenshot

次に、もう一つアクションを追加する必要があります。

Screenshot

検索ボックスをクリックします。

Screenshot

「intercept upstream errors」を検索します。

Screenshot

上流へのプロキシを既に設定しているため、このアクションを有効にすることで上流のエラーを捕捉できます。

Screenshot

さらに、このルールを他のルールの前に配置する必要があります。そうすることで、カスタムエラーページを返すことができます。

Screenshot

保存すれば完了です。

Screenshot

通常、「new page rule」をプッシュするには新しいバージョンを公開する必要があります。

Screenshot

ここをクリックして保留中の変更を公開します。

Screenshot

公開をクリックします!

Screenshot

これで完全に同期されました。

Screenshot

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

Embeded video

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

Embeded image

ページルールの検証

このルールを検証するために、ゲートウェイサーバーの1つをテストしてみましょう。

Screenshot

このサンフランシスコのゲートウェイサーバーの IP アドレスをコピーします。

Screenshot

そして、ターミナルでテストを行います。

Screenshot

これは先ほど見たサンフランシスコのゲートウェイサーバーの IP アドレスです。

Screenshot

これは存在しないランダムに生成された URL なので、404 レスポンスであることがわかります。

Screenshot

コマンドを実行し続けます。

Screenshot

リクエスト情報を HTML 形式で出力できます。これはエラーページの原因を調査する際に役立ちます。

Screenshot

より多くの情報を出力したり、エラーページのスタイルを変更したりしたい場合は、ページテンプレートを編集するだけです。変更は即座に公開され、有効になります。

Screenshot

エラーページのグローバル書き換えルール

すべてのアプリケーションで同じエラーページを使用したい場合は、グローバル書き換えルールを設定することもできます。

Screenshot

「Global Rewrite Rules」ページに移動します。

Screenshot

ここをクリックして新しいルールを追加します。これはアプリケーション内の「Page Rules」とほぼ同じです。 この機能については別のチュートリアルでご紹介いたします。

Screenshot

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 以上のオープンソースソフトウェアライブラリを執筆しております。

翻訳

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