OpenResty Edge における上流リクエストの異なるホストヘッダー設定
本日は、上流またはバックエンドサーバーに送信されるリクエストに対して、異なる 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'
次に、IP が 191 で終わるバックエンドサーバーにログインします。
ssh 54.213.103.191
サーバーの最後のアクセスログを確認します。
tail -1 /usr/local/openresty/nginx/logs/access.log
転送されたリクエストの Host
ヘッダーが確かに test-edge.com
であることがわかります。
上流リクエストの Host ヘッダーの設定
ここで、OpenResty Edge を設定して、バックエンドに異なる Host ヘッダー、例えば blah.com
を送信するようにします。
上流リクエストの Host ヘッダーを変更してみましょう。
既存のプロキシルールを直接編集します。
新しいアクション「プロキシホストの設定」を追加します。
「プロキシホストの設定」を検索します。
それを選択します。
ホスト名 blah.com
を入力します。
変更を保存します。
いつものように、この新しいページルールをプッシュするためにリリースする必要があります。
このボタンをクリックします。
リリースします!
完全に同期されました。
これで、新しいページルールがすべてのゲートウェイクラスターとサーバーにプッシュされました。
設定変更にはサーバーのリロード、再起動、またはサーバープロセスのバイナリアップグレードが不要なため、非常に効率的でスケーラブルです。
今回は、バックエンドサーバーで受信した Host
リクエストヘッダーが blah.com
になっているはずです。確認してみましょう!
新しいページルールのテスト
再度ターミナルでゲートウェイサーバーにリクエストを送信します。
curl -sSI 'http://test-edge.com'
そして再び IP が 191 で終わるバックエンドサーバーにログインします。
ssh 54.213.103.191
最後のアクセスログを確認します。
tail -1 /usr/local/openresty/nginx/logs/access.log
転送されたリクエストの Host
ヘッダーが blah.com
に変更されており、期待通りの結果となっています。
以上が本日ご紹介したい内容です。
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(マイクロサービスおよび分散トラフィックに最適化された多機能
翻訳
英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!