0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

Nginx UI

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

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

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

image.png

Nginx Proxy Manager

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

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

構築

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

bash -c "$(curl -L https://cloud.nginxui.com/install.sh)" @ install

Nginx UIは、ディレクトリの構造制限があります。
以下のような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でアクセスできます。

初期設定

image.png

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

image.png

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

各項目

サーバーダッシュボード

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

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

01.png

Nginxダッシュボード

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

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

image.png

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

サイト管理

サイト一覧

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

image.png

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

サイトの編集

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

image.png

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

image.png

ストリームの管理

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

image.png

設定管理

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

image.png

ターミナル

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

Nginxログ

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

10.png

ノード

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

image.png

証明書管理

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

発行用の設定

Cloudflare トークン取得

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

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

image.png

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

image.png

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

DNS認証情報設定

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

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

image.png

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

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

ACMEユーザー設定

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

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

image.png

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

発行してみよう

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

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

image.png

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

image.png

image.png

証明書の適用

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

image.png

image.png

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

おわりに

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?