2026年3月24日火曜日

リバース・プロキシの構成にnginxの代わりにOpenRestyを使用する

Oracle Linux 8でnginxによるリバース・プロキシを構成しようとしたことろ、more_set_headersやmore_clear_headersディレクティブのサポートに必要なパッケージnginx-mod-headers-moreが見当たりません。Oracle Linux 8ではリポジトリにEPELを含めても、パッケージnginx-mod-headers-moreは提供されていないようです。

どうしたものかとChatGPTに相談したところ、OpenRestyの使用を勧められました。

OpenResty - Scalable Web Platform by Extending NGINX with Lua
https://openresty.org/

NginxのコアにLuaという言語の実行エンジン(LuaJIT)を組み込んで、その上で3rd PartyのNginxモジュールを組み込んだWebサーバーのようです。more_set_headersおよびmore_clear_headersを含むNginxモジュールが組み込み済みであるため、オペレーティング・システムにバンドルされているNginxより導入が容易です。

Nginxと互換であるため、設定はファイルはほとんどそのまま流用できます。

Oracle Linux 8での導入手順を紹介します。作業環境は、以下の記事の手順に従って作成した、Oracle Cloudのコンピュート・インスタンス(ARM)で実行されているOracle APEXの環境です。コンピュート・インスタンスにはユーザーopcで接続し、作業を実施します。

Oracle APEXの環境作成(0) - はじめに
https://apexugj.blogspot.com/2022/11/building-oracle-apex-environment-00-intro.html

nginxによるリバース・プロキシの構成について、作業手順を紹介した記事です。本記事は、これらの記事への追加作業になります。


OpenRestyの事前作成済みのバイナリを導入します。Oracle Linux 8向けの手順は記載されていないため、RHELの手順に従います。


RHEL 8 or olderの作業を実施します。

RHELの手順の最後に「For RHEL 8 and beyond, we just need to replace the yum commands above with dnf.」とあるため、yumコマンドの代わりにdnfを使用します。

wget https://openresty.org/package/rhel/openresty.repo
sudo mv openresty.repo /etc/yum.repos.d/openresty.repo
sudo dnf check-update


[opc@oracle19cee ~]$ wget https://openresty.org/package/rhel/openresty.repo

--2026-03-24 14:21:36--  https://openresty.org/package/rhel/openresty.repo

openresty.org (openresty.org) をDNSに問いあわせています... 13.59.70.33

openresty.org (openresty.org)|13.59.70.33|:443 に接続しています... 接続しました。

HTTP による接続要求を送信しました、応答を待っています... 200 OK

長さ: 263 [application/octet-stream]

`openresty.repo' に保存中


openresty.repo            100%[==================================>]     263  --.-KB/s 時間 0s       


2026-03-24 14:21:36 (482 MB/s) - `openresty.repo' へ保存完了 [263/263]


[opc@oracle19cee ~]$ sudo mv openresty.repo /etc/yum.repos.d/openresty.repo

[opc@oracle19cee ~]$ sudo dnf check-update

メタデータの期限切れの最終確認: 2:18:55 前の 2026年03月24日 12時02分54秒 に実施しました。


bcache-tools.aarch64                 1.0.8-3.101.0.4.el8                           ol8_baseos_latest 

bpftool.aarch64                      5.15.0-318.199.3.2.el8uek                     ol8_UEKR7         

brotli.aarch64                       1.0.6-4.el8_10                                ol8_baseos_latest 

buildah.aarch64                      2:1.33.14-3.module+el8.10.0+90844+cf83192e    ol8_appstream     

cloud-init.noarch                    23.4-7.0.3.el8_10.11                          ol8_appstream     

cockpit-podman.noarch                84.1-1.module+el8.10.0+90844+cf83192e         ol8_appstream     

conmon.aarch64                       3:2.1.10-1.module+el8.10.0+90844+cf83192e     ol8_appstream     

container-selinux.noarch             2:2.229.0-2.module+el8.10.0+90844+cf83192e    ol8_appstream     

containernetworking-plugins.aarch64  1:1.4.0-8.module+el8.10.0+90844+cf83192e      ol8_appstream     

containers-common.aarch64            2:1-82.0.1.module+el8.10.0+90844+cf83192e     ol8_appstream     

criu.aarch64                         3.18-5.module+el8.10.0+90844+cf83192e         ol8_appstream     

cups.aarch64                         1:2.2.6-67.el8_10                             ol8_appstream     

cups-client.aarch64                  1:2.2.6-67.el8_10                             ol8_appstream     

cups-filesystem.noarch               1:2.2.6-67.el8_10                             ol8_appstream     

cups-ipptool.aarch64                 1:2.2.6-67.el8_10                             ol8_appstream  


[中略]

   


vim-enhanced.aarch64                 2:8.0.1763-22.0.1.el8_10                      ol8_appstream     

vim-filesystem.noarch                2:8.0.1763-22.0.1.el8_10                      ol8_appstream     

vim-minimal.aarch64                  2:8.0.1763-22.0.1.el8_10                      ol8_baseos_latest 

パッケージの廃止

grub2-tools.aarch64                  1:2.02-170.0.1.el8_10.1                       ol8_baseos_latest 

    grub2-tools.aarch64              1:2.02-169.0.1.el8_10                         @ol8_baseos_latest

grub2-tools-extra.aarch64            1:2.02-170.0.1.el8_10.1                       ol8_baseos_latest 

    grub2-tools.aarch64              1:2.02-169.0.1.el8_10                         @ol8_baseos_latest

grub2-tools-minimal.aarch64          1:2.02-170.0.1.el8_10.1                       ol8_baseos_latest 

    grub2-tools.aarch64              1:2.02-169.0.1.el8_10                         @ol8_baseos_latest

kernel-headers.aarch64               4.18.0-553.104.1.el8_10                       ol8_baseos_latest 

    kernel-headers.aarch64           4.18.0-553.100.1.el8_10                       @ol8_baseos_latest

kernel-headers.aarch64               4.18.0-553.105.1.el8_10                       ol8_baseos_latest 

    kernel-headers.aarch64           4.18.0-553.100.1.el8_10                       @ol8_baseos_latest

kernel-headers.aarch64               4.18.0-553.107.1.el8_10                       ol8_baseos_latest 

    kernel-headers.aarch64           4.18.0-553.100.1.el8_10                       @ol8_baseos_latest

kernel-headers.aarch64               4.18.0-553.109.1.el8_10                       ol8_baseos_latest 

    kernel-headers.aarch64           4.18.0-553.100.1.el8_10                       @ol8_baseos_latest

kernel-headers.aarch64               4.18.0-553.111.1.el8_10                       ol8_baseos_latest 

    kernel-headers.aarch64           4.18.0-553.100.1.el8_10                       @ol8_baseos_latest

[opc@oracle19cee ~]$ 


OpenRestyをインストールします。

sudo dnf -y install openresty

[opc@oracle19cee ~]$ sudo dnf -y install openresty

メタデータの期限切れの最終確認: 2:27:19 前の 2026年03月24日 12時02分54秒 に実施しました。

依存関係が解決しました。

=====================================================================================================

 パッケージ                   アーキテクチャー  バージョン                 リポジトリー        サイズ

=====================================================================================================

インストール:

 openresty                    aarch64           1.29.2.2-1.el8             openresty           1.3 M

依存関係のインストール:

 openresty-openssl3           aarch64           3.5.5-1.el8                openresty           2.9 M

 openresty-pcre2              aarch64           10.47-1.el8                openresty           455 k

 openresty-zlib               aarch64           1.3.2-1.el8                openresty            58 k


トランザクションの概要

=====================================================================================================

インストール  4 パッケージ


ダウンロードサイズの合計: 4.6 M

インストール後のサイズ: 14 M

パッケージのダウンロード:

(1/4): openresty-pcre2-10.47-1.el8.aarch64.rpm                       255 kB/s | 455 kB     00:01    

(2/4): openresty-zlib-1.3.2-1.el8.aarch64.rpm                        750 kB/s |  58 kB     00:00    

(3/4): openresty-1.29.2.2-1.el8.aarch64.rpm                          696 kB/s | 1.3 MB     00:01    

(4/4): openresty-openssl3-3.5.5-1.el8.aarch64.rpm                    1.4 MB/s | 2.9 MB     00:01    

-----------------------------------------------------------------------------------------------------

合計                                                                 2.3 MB/s | 4.6 MB     00:01     

トランザクションを確認しています

トランザクションの確認に成功しました。

トランザクションをテストしています

トランザクションのテストに成功しました。

トランザクションを実行しています

  準備中           :                                                                             1/1 

  インストール中   : openresty-zlib-1.3.2-1.el8.aarch64                                          1/4 

  インストール中   : openresty-openssl3-3.5.5-1.el8.aarch64                                      2/4 

  インストール中   : openresty-pcre2-10.47-1.el8.aarch64                                         3/4 

  インストール中   : openresty-1.29.2.2-1.el8.aarch64                                            4/4 

  scriptletの実行中: openresty-1.29.2.2-1.el8.aarch64                                            4/4 

  検証中           : openresty-1.29.2.2-1.el8.aarch64                                            1/4 

  検証中           : openresty-openssl3-3.5.5-1.el8.aarch64                                      2/4 

  検証中           : openresty-pcre2-10.47-1.el8.aarch64                                         3/4 

  検証中           : openresty-zlib-1.3.2-1.el8.aarch64                                          4/4 


インストール済み:

  openresty-1.29.2.2-1.el8.aarch64                openresty-openssl3-3.5.5-1.el8.aarch64            

  openresty-pcre2-10.47-1.el8.aarch64             openresty-zlib-1.3.2-1.el8.aarch64                


完了しました!

[opc@oracle19cee ~]$ 


OpenRestyがインストールされていると、nginxは不要です。しかし、nginxのインストールを行なっていないと、OSユーザーのnginxや各種ディレクトリが作成されるかどうかは確認していません。今回の作業はnginxからの乗り換えなので、構成ディレクトリなどはnginxで使用していたものを流用しています。OpenRestyをインストールした後にnginxはremoveし、nginxがなくてもOpenRestyが動作することは確認していますが、nginxを一度もインストールしていない場合は、ユーザーや構成ディレクトリの有無を確認する必要があります。

OpenRestyはデフォルトで/usr/local/openresty以下にインストールされます。

OpenResty向けの構成ファイルとしてopenresty-nginx.confを作成しました。OpenRestyでは、Nginx用のモジュールはインストール不可であるため、モジュールのインポートを削除しています。また、設定ファイルmime.typesとして、OpenResty以下を参照するように変更しています。変更点はそれだけです。


自動起動のファイルとしてopenresty.serviceを作成します。restoreconコマンドはopenresty.serviceを直接/etc/systemd/system/以下に作成した場合は、実行は不要です。


sudo mv openresty.service /etc/systemd/system/
sudo restorecon -v /etc/systemd/system/openresty.service
sudo systemctl daemon-reload
sudo systemctl enable openresty
sudo systemctl start openresty


[opc@oracle19cee ~]$ sudo mv openresty.service /etc/systemd/system/

[opc@oracle19cee ~]$ sudo restorecon -v /etc/systemd/system/openresty.service

Relabeled /etc/systemd/system/openresty.service from unconfined_u:object_r:user_home_t:s0 to unconfined_u:object_r:systemd_unit_file_t:s0

[opc@oracle19cee ~]$ sudo systemctl daemon-reload

[opc@oracle19cee ~]$ sudo systemctl enable openresty

Created symlink /etc/systemd/system/multi-user.target.wants/openresty.service → /usr/lib/systemd/system/openresty.service.

[opc@oracle19cee ~]$ sudo systemctl start openresty

[opc@oracle19cee ~]$ 


NginxをOpenRestyで置き換える作業は以上で完了です。