Cover Image for Nginx UIを使ってNginxの設定をWebUIで管理しよう

Nginx UIを使ってNginxの設定をWebUIで管理しよう

Nginx UI

Nginx UIは、Nginxの設定をほぼすべてWebUI上で管理できるツールです。
GoとVueで構築されているので、動作も軽量で快適です。

Nginx UI | Yet another Nginx Web UI
Yet another Nginx Web UI
Nginx UI | Yet another Nginx Web UI favicon https://nginxui.com/
GitHub - 0xJacky/nginx-ui: Yet another WebUI for Nginx
Yet another WebUI for Nginx. Contribute to 0xJacky/nginx-ui development by creating an account on GitHub.
GitHub - 0xJacky/nginx-ui: Yet another WebUI for Nginx favicon https://github.com/0xJacky/nginx-ui
GitHub - 0xJacky/nginx-ui: Yet another WebUI for Nginx

GUIベースのブロックエディタと、Nginx構文ハイライトおよびコード補完機能を備えたコードエディタがあります。
また、Nginxノードをクラスタリングすることもできます。
AIアシスタントまでくっついています。

これまでは設定ファイルを直接いじって管理せざるを得ませんでしたが、このツールを使うことで証明書の管理からサーバーのステータス監視、プロキシの設定までほぼすべてWebUIで管理できるようになります。

01.png

Nginx Proxy Manager

似たようなツールにNginx Proxy Managerがあります。

Nginx Proxy Manager
Docker container and built in Web Application for managing Nginx proxy hosts with a simple, powerful interface, providing free SSL support via Let's Encrypt
Nginx Proxy Manager favicon https://nginxproxymanager.com/
Nginx Proxy Manager

NPMと根本的に違う点が設計思想です。
NPMでは、複雑な設定項目やファイルを抽象化して初心者でも使いやすく設計されている反面、自分で詳細な設定を詰めたいユーザーには向いていません。
Nginx UIは、設定を抽象化して簡略にするのではなく、ブロックエディタとコードエディタなどを組み合わせて管理機能を拡張する方向で設計されています。

構築

公式からインストール用のワンラインコマンドが出ているので、そちらを使用します。
DockerやBrewでのインストールも出来ます。

Getting Started | Nginx UI
Yet another Nginx Web UI
Getting Started | Nginx UI favicon https://nginxui.com/guide/getting-started.html
console
bash -c "$(curl -L https://cloud.nginxui.com/install.sh)" @ install

Important


以下のようなavailable-enabled構成が必要です。

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

インストールが終わったら起動します。

console
systemctl enable --now nginx-ui

http://localhost:9000でアクセスできます。

初期設定

02.png

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

03.png

これで初期設定は完了です。

各項目

サーバーダッシュボード

ここでは、次のような情報が閲覧できます。

  • ・ サーバー情報
  • ・ メモリ・ストレージの使用状況
  • ・ ネットワークの送受信統計
  • ・ CPUの使用状況
  • ・ ネットワークのリアルタイムグラフ
  • ・ ディスクIOのリアルタイムグラフ

01.png

Nginxダッシュボード

ここでは、次のような情報が閲覧できます。

  • ・ パフォーマンスのメトリクス
  • ・ 現在の接続数・プロセス数
  • ・ リクエストの統計・ロード済みモジュール
    などが閲覧できます。

04.png

接続あたりのリクエスト数や、プロセス分布をリアルタイムで確認しながらパフォーマンスのチューニングを行えます。

サイト管理

サイト一覧

ここでは、現在設定されているすべてのサイトを閲覧・管理できます。

05.png

プロキシ設定の有効・無効を切り替えたり、プロキシ先の死活監視状況が確認できます。

サイトの編集

サイト編集画面で、各プロキシ設定を変更できます。

06.png

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

07.png

ストリームの管理

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

08.png

設定管理

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

09.png

ターミナル

証明書管理は後程詳しく解説します。
ここではホストマシンのターミナルにアクセスできます。

Nginxログ

各種ログが閲覧できます。
access.logとerror.log以外のファイルでも設定を変更することで表示可能です。

10.png

ノード

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

11.png

証明書管理

Nginx UIでは、Let's Encryptが統合されています。
通常のHTTPチャレンジ用プロキシ設定の生成もできるほか、DNSサービスと連携したDNSチャレンジも利用可能です。
今回は、Cloudflareと連携して自動でSSL証明書を取得できるようにしてみようと思います。

発行用の設定

Cloudflare トークン取得

まずはCloudflareでAPIトークンを取得します。
必要なトークンは次の2つです。

  • ・ 対象ゾーンで、DNS:編集権限を持ったトークン

12.png

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

13.png

これら2つのトークンが用意出来たら、次へ進みます。

DNS認証情報設定

DNS 認証情報タブでAddをクリックして登録画面を開き、次のように入力します。

Note

名前 -> 適当に付ける
DNSプロバイダー -> Cloudflare
CF_API_EMAIL -> Cloudflareアカウントのメールアドレス
CF_DNS_API_TOKEN -> DNS:編集の権限を持ったトークン
CF_ZONE_API_TOKEN -> ゾーン:読み取りの権限を持ったトークン

14.png

ここの設定は、追加したいドメインの分だけ繰り返します。

追加できたら次へ進みます。

ACMEユーザー設定

ACMEユーザータブで、またAddをクリックして登録画面へ入力します。

Note

名前 -> 適当に付ける
メール -> 受信できればなんでも良い
CAディレクトリ -> https://acme-v02.api.letsencrypt.org/directory
起動時に登録 -> オン

15.png

これで発行の準備ができました。

発行してみよう

証明書リストで証明書を発行ボタンを押し、次のように設定します。

Note

証明書の種類 -> お好きにどうぞ
ドメイン/カスタムドメイン -> 自分の所持しているドメイン
鍵の種類 -> EC256
ACMEユーザー -> 先ほど作ったものを選択
DNSプロバイダー -> Cloudflare
認証情報 -> ドメインに対応した認証情報

16.png

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

17.png

18.png

証明書の適用

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

19.png

20.png

ここまで設定してアクセスしてみると、SSLが適用されていると思います。

おわりに

まだまだ紹介しきれていない機能があるので、皆さん各自で触ってみてください。