OpenResty Edge では、静的ファイルをゲートウェイのグローバル静的ファイルストレージに直接保存し、ページルールを使ってエッジから直接返すことができます。オリジンへの back-to-source が不要になるため、パフォーマンスが高く、より信頼性があります。単一のファイルを完全な URI で一致させたり、URI プレフィックスでディレクトリ全体を配信したり、URI プレフィックスを無視してリクエストからプレフィックスを取り除いたりできます。本チュートリアルでは、ファイルのアップロードと各一致モードの設定手順を順に解説します。

OpenResty Edge から静的ファイルを back-to-source なしで直接配信

OpenResty Edge への静的ファイルのアップロード

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

OpenResty Edge Admin Web コンソールのサンプルデプロイメント

まず、静的ファイルを OpenResty Edge にアップロードします。

静的ファイルを OpenResty Edge へアップロード開始

グローバル静的ファイルページに移動します。

OpenResty Edge のグローバル静的ファイルページ

ディレクトリを作成します。

グローバル静的ファイルページでディレクトリを作成

「test」という名前を付けます。

新しい静的ファイルディレクトリに test と命名

作成をクリックします。

test ディレクトリの作成を確定

作成したディレクトリがリストに表示されています。

リストに表示された作成済みの test ディレクトリ

そのディレクトリをクリックして入ります。

test ディレクトリに入る

ここでファイルをアップロードします。

test ディレクトリにファイルをアップロード

「bird.jpg」ファイルを選択します。

アップロードするファイル bird.jpg を選択

アップロード対象として選択された bird.jpg

このファイルを保存します。

アップロードした bird.jpg ファイルを保存

サブディレクトリを作成します。

サブディレクトリを作成

「images」という名前を付けます。

サブディレクトリに images と命名

作成をクリックします。

images サブディレクトリの作成を確定

サブディレクトリに入ります。

images サブディレクトリに入る

別のファイルをアップロードします。

images サブディレクトリに別のファイルをアップロード

「cat.jpg」ファイルを選択します。

アップロードするファイル cat.jpg を選択

アップロード対象として選択された cat.jpg

このファイルを保存します。

アップロードした cat.jpg ファイルを保存

ページルールによる静的ファイルの配信

ファイルがアップロードされたので、次にそれらを使用してみましょう。

アップロード済みの静的ファイルを使用する準備

以前のサンプルアプリケーション、test-edge.com を引き続き使用できます。

サンプルアプリケーション test-edge.com

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

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

ページルールページに移動します。

ページルールページを開く

ここには、以前のビデオチュートリアルで作成したページルールがあります。

以前のチュートリアルで作成したページルール

ここで、ファイルを直接返す新しいページルールを作成します。

ファイルを直接返す新しいページルールを作成

URI が「/images/bird.jpg」であるかどうかをチェックするルール条件を有効にします。

URI /images/bird.jpg をチェックするルール条件を追加

演算子として「String=」を選択します。

文字列完全一致の演算子を選択

URI 条件に文字列完全一致の演算子を選択

この静的ファイルに一致させるために「/images/bird.jpg」という値を入力します。

静的ファイルに一致させるため /images/bird.jpg を入力

「Content」スイッチをオンにします。

ページルールで Content スイッチをオンにする

先ほどアップロードしたファイルの 1 つを選択します。

返却する、アップロード済みファイルを 1 つ選択

アップロード済みの静的ファイルを参照

そのディレクトリを展開します。

test ディレクトリを展開

「bird.jpg」画像を選択します。

返却する画像 bird.jpg を選択

既存のプロキシページルールの前にこのページルールを挿入することを選択します。

このページルールをプロキシページルールの前に挿入

このルールを作成するボタンをクリックします。

このページルールを作成

いつものように、この新しい変更をプッシュするためにリリースする必要があります。

変更をプッシュするため新しいリリースを開始

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

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

リリースします!

新しいリリースをプッシュ

新しいバージョンがすべてのゲートウェイサーバーに同期されました。

新しいバージョンがすべてのゲートウェイサーバーに同期

静的ファイルページルールのテスト

次に、URI が “images/bird.jpg” の HTTP リクエストを送信します。

images/bird.jpg の HTTP リクエストを送信

期待通り、鳥の画像が返されたことが確認できます。

プレフィックスでディレクトリ全体を配信

ファイルの返却を実演した後、次にディレクトリについて説明します。

ページルールページに移動します。

ページルールページに戻る

ページルールを編集します。

ページルールを編集

演算子として “プレフィックス一致” を選択します。

「プレフィックス一致」演算子を選択

「プレフィックス一致」演算子を選択済み

「/images」という値を入力します。これはこのパスの静的リソースのみにマッチすることを意味します。

このパスの静的リソースのみに一致させるため /images を入力

/images プレフィックス条件

先ほど作成したディレクトリを選択します。

配信するアップロード済みディレクトリを選択

「URI プレフィックスを無視」オプションを使用すると、リクエストの URL と実際のリソースの URI が異なることを許可します。この機能については後ほど実演します。

「URI プレフィックスを無視」オプション

このルールを保存します。

ページルールを保存

いつものように、この新しい変更をプッシュするためにリリースする必要があります。

変更をプッシュするため新しいリリースを開始

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

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

リリースします。

新しいリリースをプッシュ

新しいバージョンがすべてのゲートウェイサーバーに同期されました。

新しいバージョンがすべてのゲートウェイサーバーに同期

URI が「images/cat.jpg」のリクエストを送信します。

images/cat.jpg のリクエストを送信

このリクエストは「images」サブディレクトリにある猫の画像を返します。

「images/bird.jpg」をリクエストするとどうなるでしょうか?

images/bird.jpg のリクエストを送信

このリクエストはエラーページを返すことがわかります。これは「images」サブディレクトリに「bird.jpg」ファイルが存在しないためです。

URI プレフィックスを無視する

次に、URI のプレフィックスを無視する方法を実演します。

ページルールページに移動します。

ページルールページに戻る

先ほどのページルールを編集します。

このページルールを再度編集

引き続き「test」ディレクトリを使用します。

引き続き test ディレクトリを選択

ここで「String」を無視するように選択します。

String のプレフィックスを無視するよう選択

「/images/」と入力します。

無視するプレフィックスとして /images/ を入力

このルールを保存します。

ページルールを保存

いつものように、この新しい変更をプッシュするためにリリースする必要があります。

変更をプッシュするため新しいリリースを開始

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

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

リリースします!

新しいリリースをプッシュ

新しいバージョンがすべてのゲートウェイサーバーに同期されました。

新しいバージョンがすべてのゲートウェイサーバーに同期

「/images」プレフィックス付きのリクエストを送信します。

/images プレフィックス付きのリクエストを送信

このリクエストは鳥の画像を返しました。

次に、「images」サブディレクトリ内の画像をリクエストします。

images サブディレクトリ内の画像をリクエスト

リクエストは猫の画像を返しました。

次に、「/no」プレフィックス付きの存在しないリソースのリクエストを送信します。

存在しない /no プレフィックス付きのリクエストを送信

エラーページが返されたことが確認できます。

存在しないリソースに対して返されたエラーページ

これで静的ファイルをゲートウェイ上に直接保存・配信できました。オリジンから取得した動的レスポンスをキャッシュしたい場合は、OpenResty Edge のキャッシュルールをご覧ください。リソースを自前のプライベート CDN としてグローバルに配信したい場合は、OpenResty Edge でプライベート CDN を構築するをご覧ください。

よくある質問

OpenResty Edge は back-to-source なしで静的ファイルを配信できますか?

はい。ファイルをグローバル静的ファイルストレージにアップロードすると、ページルールがゲートウェイから直接それを返すため、リクエストは back-to-source を必要としません。これによりパフォーマンスが高く、より信頼性があります。

単一のファイルとディレクトリ全体は、それぞれどう配信しますか?

ページルールで文字列完全一致の演算子を使い、1 つの完全な URI(例:「/images/bird.jpg」)に一致させます。あるいは「プレフィックス一致」演算子を使い、URI プレフィックス(例:「/images」)でアップロード済みのディレクトリ全体を配信します。

「URI プレフィックスを無視」は何をしますか?

ファイルを検索する前に、リクエストからプレフィックス(例:「/images/」)を取り除くことで、リクエストの URL と実際のリソースの URI が異なることを許可します。

新しい静的ファイルやページルールを本番へ反映するには?

新しいリリースを行います。そのバージョンがすべてのゲートウェイサーバーに同期されます。

OpenResty Edge とは

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

このチュートリアルがお役に立ちましたら、本ブログおよび弊社の YouTube チャンネル をぜひご購読ください。

著者について

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

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

翻訳

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