本日は、上流またはバックエンドサーバーに送信されるリクエストに対して、異なる Host ヘッダーを設定する方法をご紹介します。この図では、クライアントが Host ヘッダーを test-edge.com として送信していますが、オリジンサーバーに到達するリクエストでは、別の Host ヘッダー:blah.com となっています。

嵌入图片

上流リクエストの Host ヘッダーを設定する前

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

今回も test-edge.com ドメインのサンプルアプリケーションを使用します。

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

屏幕截图

以前のチュートリアルで上流を定義しました。

スクリーンショット

この my backend 上流には、すでにバックエンドサーバーが定義されています。

スクリーンショット

バックエンドサーバーの IP アドレスが「191」で終わっていることに注目してください。後ほどこの IP アドレスを使用します。

スクリーンショット

また、ページルールも定義済みです。

スクリーンショット

このページルールは、先ほど見た上流へのリバースプロキシを設定しています。

スクリーンショット

ゲートウェイサーバーにテストリクエストを送信し、バックエンドサーバーで受信した Host リクエストヘッダーを確認します。デフォルトでは、これらは同じはずです。

嵌入图片

ターミナルで curl コマンドを使用して、test-edge.com を通じてゲートウェイサーバーにリクエストを送信します。このドメインがゲートウェイサーバーに解決されていると仮定します。

curl -sSI 'http://test-edge.com'

屏幕截图 1

次に、IP が 191 で終わるバックエンドサーバーにログインします。

ssh 54.213.103.191

屏幕截图 2

サーバーの最後のアクセスログを確認します。

tail -1 /usr/local/openresty/nginx/logs/access.log

転送されたリクエストの Host ヘッダーが確かに test-edge.com であることがわかります。

屏幕截图 3

上流リクエストの Host ヘッダーの設定

ここで、OpenResty Edge を設定して、バックエンドに異なる Host ヘッダー、例えば blah.com を送信するようにします。

埋め込み画像

上流リクエストの Host ヘッダーを変更してみましょう。

屏幕截图

既存のプロキシルールを直接編集します。

スクリーンショット

新しいアクション「プロキシホストの設定」を追加します。

スクリーンショット

「プロキシホストの設定」を検索します。

スクリーンショット

スクリーンショット

それを選択します。

スクリーンショット

ホスト名 blah.com を入力します。

スクリーンショット

変更を保存します。

屏幕截图

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

スクリーンショット

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

スクリーンショット

リリースします!

スクリーンショット

完全に同期されました。

スクリーンショット

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

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

埋め込み画像

今回は、バックエンドサーバーで受信した Host リクエストヘッダーが blah.com になっているはずです。確認してみましょう!

嵌入图片

新しいページルールのテスト

再度ターミナルでゲートウェイサーバーにリクエストを送信します。

curl -sSI 'http://test-edge.com'

屏幕截图 1

そして再び IP が 191 で終わるバックエンドサーバーにログインします。

ssh 54.213.103.191

屏幕截图 2

最後のアクセスログを確認します。

tail -1 /usr/local/openresty/nginx/logs/access.log

転送されたリクエストの Host ヘッダーが blah.com に変更されており、期待通りの結果となっています。

スクリーンショット 3

以上が本日ご紹介したい内容です。

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

翻訳

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