トップ OSS紹介 OpenResty

OpenResty

サポート対象

NRIのOpenStandiaが提供するOpenResty詳細情報

OpenResty情報

OpenResty情報更新日:2026/02/17

OpenRestyとは

OpenResty(オープンレスティ)はNginxコア※と独自のNginxモジュール、さらにLua言語の実行環境が統合されたオープンソースの本格的なWebプラットフォームで、スケーラブルなWebアプリケーション、マイクロサービス、APIゲートウェイに適しています。
※NginxコアはNginxの基本機能を提供する組み込みコンポーネントです。

OpenResty は2007年10月にYahoo Chinaで働いていたYichun Zhang氏によって開発が始まりました。その後、2011年からCloudflare社、2016年以降はOpenResty Software Foundation と OpenResty Inc.によって開発が進められています。

主な特徴

Webサーバとアプリケーションサーバの統合によるレスポンス向上

OpenRestyはWebサーバであるNginxのコア機能をベースにアプリケーション機能を搭載したもので、以下のようなモジュール構成になっています。

OpenRestyはWebサーバとアプリケーションサーバを一体化していることが大きな特徴です。
一般的なWebサーバ構成ではアプリケーションサーバを別に用意するため、サーバ間通信によるレイテンシが発生します。これに対してOpenRestyでは両機能が一体化しているため、レスポンスの向上が期待できます。
開発当初、Nginx独自モジュールはPerlで書かれていましたが、現在はC言語で実装されています。

イベント駆動、ノンブロッキングI/Oの活用による高スループット

OpenRestyのベースとなっているNginxコアはノンブロッキングI/Oとイベント駆動型モデルを組み合わせることにより、複数のリクエストを1スレッドで処理することができます。これによりサーバリソースの有効活用が可能となり、高スループットを実現しています。
さらに、その上で動作するLua言語もノンブロッキングI/Oを扱うことを得意としています。
従来のプログラム言語ではイベント駆動を実装する一般的な方法として、コールバック関数が用いられてきました。これはプログラム上でリクエストを発行した際に、そのレスポンスを待つ代わりに、レスポンス発生時に呼び出される関数を定義しておくことでイベント駆動を実現するものです。しかしながら、この記述スタイルはリクエストとレスポンスの記述箇所が分かれるため、プログラムの見通しが悪く、使いこなすのが難しいという欠点があります。
これに対し、Lua言語はプログラム上ではコルーチン(coroutine)という手法を用いて、リクエスト/レスポンスを一連の流れとして記述しながら、実際の動作としてはイベント駆動方式を使った処理を行うことができます。これにより、ユーザが作成したアプリケーションにおいてもイベント駆動、ノンブロッキングI/Oの利点を最大限引き出し、高いスループットを得ることができます。

マイクロサービス、APIゲートウェイへの適用

このようなレスポンスの良さ、スループットの高さといった特徴を生かし、OpenRestyはマイクロサービス、APIゲートウェイとしての活用が進んでおり、人気のAPIゲートウェイであるKongでもOpenRestyが使用されています。

OpenRestyバイナリパッケージのNginxには以下のようなモジュールが組み込まれています(代表的なものを抜粋)。

lua-nginx-module

LuaインタープリターまたはLuaJIT 2をNginxコアに組み込むOpenRestyのコアコンポーネントです。

stream-lua-nginx-module

Luaの機能をNginxストリーム/TCPサーバに組み込むOpenRestyのコアコンポーネントです。

array-var-nginx-module

Nginxコンフィグファイルで、配列型変数を使用可能にします。

ngx_coolkit

Nginx用の便利なモジュールセットです。HTTPメソッドの上書き、Authorizationヘッダからデコードされたパスワードの取得などが可能です。

echo-nginx-module

ストリーミング入出力、並列/逐次サブリクエスト、タイマー、スリープ、などのメタデータアクセスのためにNginx内部APIをラップします。

encrypted-session-nginx-module

改ざん防止用MAC付きの AES-256 に基づき Nginx 変数の暗号化、復号化のサポートを提供します。

form-input-nginx-module

application/x-www-form-urlencoded でエンコードされたHTTP POST、PUTリクエスト本文を解析するNginxモジュールです。

headers-more-nginx-module

指定したレスポンスヘッダー、リクエストヘッダーを、追加、設定、またはクリアできるようにします。

memc-nginx-module

標準のmemcachedモジュールを拡張します。

ngx-http-lua-upstream-module

クラシックNginxアップストリーム用APIを提供するNginx Cモジュールです。

ngx_devel_kit

Nginxのコア機能を拡張するように設計されたモジュールです。

redis2-nginx-module

Redis 2.0 統合プロトコルが実装されたNginxがノンブロッキングで Redis 2.x サーバと通信できるようにするアップストリームモジュールです。

set-misc-nginx-module

Nginxリライトモジュール(MD5/SHA1、SQL/JSONクォーティングなど)にさまざまな set_xxx ディレクティブを追加します。

srcache-nginx-module

Nginxの任意の機能(アップストリームや静的ディスクファイル)に透過的なキャッシュレイヤーを提供します。

xss-nginx-module

NginxにクロスサイトAJAXサポートを追加します。

また、OpenRestyには以下のようなLuaライブラリが同梱されています。これらのライブラリを使うことで、たとえば他システムとの連携や機能拡充など、各ニーズへの柔軟な対応が可能になります。

lua-resty-memcached

Lua Memcachedクライアントドライバーです。

lua-resty-mysql

Lua MySQLクライアントドライバーです。

lua-resty-redis

軽量で高速なredis rawレスポンスパーサーと、redis rawリクエスト関数を実装します。

lua-resty-dns

ノンブロッキングDNSリゾルバです。

lua-resty-upload

HTTPファイルアップロードのためのストリーミングリーダーおよびパーサーです。

lua-resty-websocket

ノンブロッキングWebSocketサーバとクライアントを実装します。

lua-resty-lock

シンプルなノンブロッキングミューテックスロックAPIを実装します。

lua-resty-lrucache

LRUキャッシュを実装します。

lua-resty-signal

Linuxプロセスを強制終了またはシグナルを送信するためのLuaライブラリです。

その他OpenRestyに同梱されているコンポーネントの詳細は下記をご参照ください。

メリット・デメリット

OpenRestyのメリット・必要性

  • OpenRestyチームによって開発された多くの高品質なNginxモジュールを利用できます。
  • 開発者は独自のLuaスクリプトを作成し、実行することができます。

OpenRestyのデメリット・注意点・課題

  • Python、C、Java などに比べるとLua の開発者が少ないため、開発者の確保が難しい、あるいは言語習得に時間がかかる可能性があります。

ユースケース

  • Nginxの機能に加え、同梱されたLuaライブラリや独自のLuaスクリプトを使用した高性能でスケーラブルなWebアプリケーション、動的なWebゲートウェイを構築できます。

動作環境

  • 主要Linuxディストリビューション向けにビルド済パッケージを提供しています(Ubuntu、Debian、RHEL、CentOS、Fedora、OpenSUSE、Alpine、Amazon Linux, Rocky Linux Oracle Linux, Azure Linux)。
  • Windows版もmacOS版も用意されています。macOSの場合は、Homebrewパッケージマネージャーを使用してインストールすることが強く推奨されています。
  • Dockerイメージも用意されています。

OpenRestyのライセンス

OpenRestyのライセンスは、2条項のBSDライセンスに基づいています。
記載された2つの条件下で、改変の有無に関わらず、ソースやバイナリの利用と再配布が認められています。

参考情報

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Red Hat JBoss Enterprise Application Platform
    サポート対象

    Red Hat JBoss Enterprise Application Platform

    ジェイボス エンタープライズアプリケーションプラットフォーム(イーエイピー)。J2EE1.4準拠のJ2EEアプリケーションサーバです。

  • Nginx
    サポート対象

    Nginx

    エンジンエックス。Apache HTTP Serverに次ぐ利用率で人気急上昇中の高速・高性能Webサーバです。

  • Kong API Gateway
    サポート対象

    Kong API Gateway

    コング。APIマーケットプレイスの技術をもとに2015年からオープンソースプロジェクトとして提供が開始されたAPIゲートウェイ(APIアグリゲータ)です。

  • GlassFish

    GlassFish

    グラスフィッシュ。オープンソースのアプリケーションサーバです。

  • Apache Tomcat
    サポート対象

    Apache Tomcat

    アパッチトムキャット。JavaサーブレットやJSPを実行するためのソフトウェア

オープンソースに関するさまざまな課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。