このチュートリアルでは、OpenResty Edge を使用してカスタムレスポンスヘッダーを追加する方法を紹介します。サーバープロセスの再起動や再読み込みは必要ありません。

文字列を値として新しいレスポンスヘッダーを追加

OpenResty Edge の Admin Web コンソールにアクセスしましょう。これは当社のコンソールのサンプルデプロイメントです。各ユーザーは独自のローカルデプロイメントを持っています。以前の例のアプリケーション「test-edge.com」を引き続き使用します。

スクリーンショット

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

スクリーンショット

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

スクリーンショット

ここをクリックして新しいページルールを追加します。

Screenshot

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

スクリーンショット

「Add response header」を選択します。

スクリーンショット

レスポンスヘッダーには名前と対応する値の2つの部分があります。

Screenshot

レスポンスヘッダーに「X-TEST-EXTRA-HEADER」という名前を付けます。

スクリーンショット

ここでの値には、文字列または組み込み変数を選択できます。まずは文字列でテストしてみましょう。

スクリーンショット

「hello world」と入力します。

スクリーンショット

このルールが既存の通常ルールの前に実行されるようにします。

Screenshot

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

スクリーンショット

いつものように、先ほどの変更をプッシュするために新しいバージョンを公開する必要があります。

スクリーンショット

リリースします!

スクリーンショット

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

Screenshot

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

埋め込み動画

これらの設定変更は、サーバーの再読み込み、再起動、またはバイナリアップグレードを必要としません。そのため、非常に効率的でスケーラブルです。

埋め込み画像

ゲートウェイサーバーでテストしてみましょう。

スクリーンショット

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

スクリーンショット

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

Screenshot

这里有我们添加的 “X-TEST-EXTRA-HEADER” 响应头。

Screenshot

「System Hostname」を値とする組み込み変数

次に、レスポンスヘッダーの値として組み込み変数を使用してみましょう。

スクリーンショット

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

スクリーンショット

レスポンスヘッダーの値として組み込み変数を選択します。

スクリーンショット

現在、組み込み変数には2つのオプションがあります。1つは「Request Header」で、これはリクエスト情報を取得できることを意味します。「Request Header」を名前で指定する必要があります。例えば、「Origin」、「Referer」などです。

Screenshot

もう1つは「System Hostname」で、これは以前に設定したゲートウェイサーバーの名前です。

スクリーンショット

「System Hostname」を試してみましょう。

スクリーンショット

保存します。

スクリーンショット

先ほどと同様に、この新しいページルールをプッシュするために公開する必要があります。

スクリーンショット

リリースします!

Screenshot

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

スクリーンショット

まず、以前のサーバーのホスト名を確認できます。

スクリーンショット

このゲートウェイサーバーのホスト名は以下の通りです。

スクリーンショット

次に、ターミナルに切り替えます。

スクリーンショット

「X-TEST-EXTRA-HEADER」レスポンスヘッダーの値が、先ほど確認したホスト名に変更されています。

Screenshot

別のゲートウェイサーバーをテストしてみましょう。例えば、フランクフルトにあるこのサーバーのホスト名は以下の通りです。

スクリーンショット

再びターミナルに戻ります。

スクリーンショット

今度はレスポンスヘッダーの値が、フランクフルトサーバーのホスト名になっています。

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

翻訳

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