BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース NGINX Unitがリバースプロキシとアドレスベースのルーティングを導入

NGINX Unitがリバースプロキシとアドレスベースのルーティングを導入

原文(投稿日:2020/02/23)へのリンク

NGINXは、同社のオープンソースのWebアプリケーションサーバNGINX Unitバージョン1.13と1.14をリリースしたことを発表した。これらのリリースにはリバースプロキシと、接続したクライアントのIPアドレスと要求のターゲットアドレスに基いた、アドレスベースのルーティングのサポートが含まれている。

NGINX Unitは、複数の言語バージョンのWebアプリケーションを同時に実行することができる。サポート対象の言語はGo、Perl、PHP、Python、Node.js、Rubyなどである。静的なコンフィギュレーションファイルは使わず、JSONを使用してREST API経由で設定を行う。設定された内容はメモリに保存され、再起動せずに更新することができる。

最新リリースではリバースプロキシのサポートが追加された。リバースプロキシはWebサーバの前に配置されて、クライアントの要求をサーバに転送する。汎用ルーティングフレームワークにはproxyオプションが追加され、指定アドレスに要求をプロキシすることが可能になった。現時点では、プロキシアドレスの設定としてIPv4、IPv6、Unixソケットアドレスがサポートされている。

例えば以下のroutesオブジェクトは、到着した要求が"match"の条件に一致した場合、その要求を127.0.0.1:8000にプロキシする。

{
  "routes": [
    {
      "match": {
        "host": "v1.example.com"
      },

      "action": {
        "proxy": "http://127.0.0.1:8000"
      }
    }
  ]
}

proxyオプションは、以前に追加されたpassおよびshareアクションと合わせて、トラフィックのルーティング方法を決定する。バージョン1.8.0で追加されたpassオプションでは、要求をアプリケーションまたはルートへ渡すことによるトラフィックの内部ルーティングが可能になる。内部ルーティングは、例えば不正な要求によるメインのアプリケーションへの影響を最小化するために別のアプリケーションへ転送して処理する、というように、特定の要求を別のアプリケーションで処理したい場合に有効である。

バージョン1.11.0で導入されたshareアクションでは、静的ファイルの共有が可能になる。URI内にエンコードされたシンボルや多数の組込みMiMEタイプなどがサポートされる他、新たなタイプを追加することも可能である。

アドレスベースのルーティングは1.14リリースで導入されたもので、sourcedestinationという、新しいマッチオプションに対するアドレスのマッチングが可能になった。sourceオプションは接続したクライアントのIPアドレスに基くマッチングが可能であり、destinationオプションは要求のターゲットアドレスにマッチする。

さらに今回のリリースでは、IPv4およびIPv6ベースのパターン、およびパターンの配列とのアドレス値のマッチが可能になった。パターンにはポート番号を指定したワイルドカード、固定アドレス、CIDR表記を使用することができる。以下の例では、CIDR表記にマッチするソースアドレスを持つ要求に対して、共有パス内のリソースへのアクセスが提供される。

{
  "routes": [
    {
      "match": {
        "source": [
          "10.0.0.0/8",
          "10.0.0.0/7:1000",
          "10.0.0.0/32:8080-8090"
        ]
      },

      "action": {
        "share": "/www/data/static/"
      }
    }
  ]
}

/www/data/static/ディレクトリが次のような構造であるとすれば、

/www/data/static/
├── stylesheet.css
├── html
│  └──index.html
└── js files
   └──page.js

"curl 10.0.0.168:1000/html/index.html"という要求でindex.htmlファイルを取得することができる。

F5 NetworksのシニアテクニカルライタであるArtem Konev氏は、NGINX Unitの将来のリリースにおいて、ラウンドロビン形式のロードバランシング、アプリケーションの分離強化を目的とするrootfsのサポート、静的アセットの処理の改善、メモリパフォーマンス向上などが行われることを示唆している。

NGINX UnitはGitHubからダウンロード可能である。サポートはNGINX Plusによって提供される。リリースの変更点に関する詳細については、NGINX Unit changelogを参照して頂きたい。

この記事に星をつける

おすすめ度
スタイル

BT