Nginx UI
Nginx UIは、Nginxの設定をほぼすべてWebUI上で管理できるツールです。
GoとVueで構築されているので、動作も軽量で快適です。
GUIベースのブロックエディタと、Nginx構文ハイライトおよびコード補完機能を備えたコードエディタがあります。
また、Nginxノードをクラスタリングすることもできます。
AIアシスタントまでくっついています。
これまでは設定ファイルを直接いじって管理せざるを得ませんでしたが、このツールを使うことで証明書の管理からサーバーのステータス監視、プロキシの設定までほぼすべてWebUIで管理できるようになります。

Nginx Proxy Manager
似たようなツールにNginx Proxy Managerがあります。
NPMと根本的に違う点が設計思想です。
NPMでは、複雑な設定項目やファイルを抽象化して初心者でも使いやすく設計されている反面、自分で詳細な設定を詰めたいユーザーには向いていません。
Nginx UIは、設定を抽象化して簡略にするのではなく、ブロックエディタとコードエディタなどを組み合わせて管理機能を拡張する方向で設計されています。
構築
公式からインストール用のワンラインコマンドが出ているので、そちらを使用します。
DockerやBrewでのインストールも出来ます。
bash -c "$(curl -L https://cloud.nginxui.com/install.sh)" @ install
Important
以下のようなavailable-enabled構成が必要です。
/etc/nginx/
├── conf.d/
├── default.d/
├── fastcgi_params
├── mime.types
├── nginx.conf
├── scgi_params
├── sites-available/ # 必須
├── sites-enabled/ # 必須
├── ssl/ # 証明書管理に必須
├── streams-available/ # Streamプロキシに必須
└── streams-enabled/ # Streamプロキシに必須
└── uwsgi_params
AlmaLinuxなどの標準インストールで構成される以下のようなconf.d構造は、上記の構造に手動で置き換える必要があります。
/etc/nginx/
├── conf.d/
├── default.d/
├── fastcgi.conf
├── fastcgi_params
├── mime.types
├── nginx.conf
├── scgi_params
├── uwsgi_params
インストールが終わったら起動します。
systemctl enable --now nginx-ui
http://localhost:9000でアクセスできます。
初期設定

インストール後、アクセスするとこのようにチェック項目が表示されます。
この警告をすべてクリアするようにディレクトリ構造などを変更し、ユーザーをセットアップします。

これで初期設定は完了です。
各項目
サーバーダッシュボード
ここでは、次のような情報が閲覧できます。
- ・ サーバー情報
- ・ メモリ・ストレージの使用状況
- ・ ネットワークの送受信統計
- ・ CPUの使用状況
- ・ ネットワークのリアルタイムグラフ
- ・ ディスクIOのリアルタイムグラフ

Nginxダッシュボード
ここでは、次のような情報が閲覧できます。
- ・ パフォーマンスのメトリクス
- ・ 現在の接続数・プロセス数
- ・ リクエストの統計・ロード済みモジュール
などが閲覧できます。

接続あたりのリクエスト数や、プロセス分布をリアルタイムで確認しながらパフォーマンスのチューニングを行えます。
サイト管理
サイト一覧
ここでは、現在設定されているすべてのサイトを閲覧・管理できます。

プロキシ設定の有効・無効を切り替えたり、プロキシ先の死活監視状況が確認できます。
サイトの編集
サイト編集画面で、各プロキシ設定を変更できます。

ここでは、ディレクティブ/ブロック単位で編集するモードと、通常の設定ファイルを編集できるモードが切り替えられます。

ストリームの管理
ここでは、ストリームプロキシ(HTTP以外のTCP/UDPプロキシ)の設定を行えます。

設定管理
ここでは、/etc/nginx/ディレクトリ以下に配置されている設定ファイルを直接編集できます。
ここにはブロックエディタはありません。

ターミナル
証明書管理は後程詳しく解説します。
ここではホストマシンのターミナルにアクセスできます。
Nginxログ
各種ログが閲覧できます。
access.logとerror.log以外のファイルでも設定を変更することで表示可能です。

ノード
ここではNginxのクラスタリング設定が行えます。
が、私個人はまだ使ったことがありません。

証明書管理
Nginx UIでは、Let's Encryptが統合されています。
通常のHTTPチャレンジ用プロキシ設定の生成もできるほか、DNSサービスと連携したDNSチャレンジも利用可能です。
今回は、Cloudflareと連携して自動でSSL証明書を取得できるようにしてみようと思います。
発行用の設定
Cloudflare トークン取得
まずはCloudflareでAPIトークンを取得します。
必要なトークンは次の2つです。
- ・ 対象ゾーンで、
DNS:編集権限を持ったトークン

- ・ 対象ゾーンで、
ゾーン:読み取り権限を持ったトークン

これら2つのトークンが用意出来たら、次へ進みます。
DNS認証情報設定
DNS 認証情報タブでAddをクリックして登録画面を開き、次のように入力します。
Note
名前 -> 適当に付ける
DNSプロバイダー -> Cloudflare
CF_API_EMAIL -> Cloudflareアカウントのメールアドレス
CF_DNS_API_TOKEN -> DNS:編集の権限を持ったトークン
CF_ZONE_API_TOKEN -> ゾーン:読み取りの権限を持ったトークン

ここの設定は、追加したいドメインの分だけ繰り返します。
追加できたら次へ進みます。
ACMEユーザー設定
ACMEユーザータブで、またAddをクリックして登録画面へ入力します。
Note
名前 -> 適当に付ける
メール -> 受信できればなんでも良い
CAディレクトリ -> https://acme-v02.api.letsencrypt.org/directory
起動時に登録 -> オン

これで発行の準備ができました。
発行してみよう
証明書リストで証明書を発行ボタンを押し、次のように設定します。
Note
証明書の種類 -> お好きにどうぞ
ドメイン/カスタムドメイン -> 自分の所持しているドメイン
鍵の種類 -> EC256
ACMEユーザー -> 先ほど作ったものを選択
DNSプロバイダー -> Cloudflare
認証情報 -> ドメインに対応した認証情報

この状態で次へを押すと、発行が始まります。


証明書の適用
発行された証明書は、各サイト管理画面のLet's Encryptでウェブサイトを暗号化/TLSを有効にするをオンにし、証明書を変更するボタンをクリックすることで適用できます。


ここまで設定してアクセスしてみると、SSLが適用されていると思います。
おわりに
まだまだ紹介しきれていない機能があるので、皆さん各自で触ってみてください。
