Nginx Proxy ManagerというOSSを紹介します。これはNginxのリバースプロキシの設定やLet's Encryptの設定をブラウザからいい感じのGUIでとても簡単に行うことができるソフトです。ホスト名やプロキシ先を入力しポチポチボタンを押していくだけでHTTPSに対応したバーチャルホストのサイトを追加できます。
機能
✅ 以下の項目をブラウザの管理画面から管理可能
- ホスト名ベースのリバースプロキシ
- パスベースのリバースプロキシ
- ホスト名ベースのHTTPリダイレクト
- TCP/UDP プロキシ
- Let's Encryptを使ったTLS化
-
http://
からhttps://
へのリダイレクトやHSTSの設定も可能
-
- HTTPのBasic認証やIPアドレスを用いたアクセス制御
- GUIに設定がない場合、カスタムのNginxの設定をテキストでGUI上から追加できる
- 設定等の変更ログを見れる
✅ その他の特徴
- 公式にDockerイメージあり
❌ できないこと
- サイトのコンテンツのホスト(あくまでプロキシしかできない)
- GUIを使ってのHTTPヘッダーの追加
- カスタムのNginxの設定をテキストで書く機能で追加することは可能
使用イメージ
使用感を伝えるためにセットアップの手順を大雑把に示します。詳しい使い方は
公式サイトを参照するか、実際にやってみればわかります。画面を立ち上げてしまえばドキュメントを読まなくても使い方がわかるのがGUIのいいところですね。
1. インストール
Dockerを使えます。以下のdocker-compose.yaml
ファイルを作成。
version: "3"
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80' # Public HTTP Port
- '443:443' # Public HTTPS Port
- '81:81' # Admin Web Port
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
以下のコマンドで起動。
$ docker compose up -d
2. 管理画面へアクセス
ブラウザで81番ポートにアクセスすると管理画面が開きます。初回起動時は以下のメールアドレスとパスワードを入力してログイン、その後メールアドレスとパスワードを変えるように求められるので変えます。
Email: admin@example.com
Password: changeme
すると以下のような画面になります(「1 Proxy Hosts」になっているのは撮影の都合で本来は「0 Proxy Hosts」です。)。
3. リバースプロキシ設定
リバースプロキシを設定してみます。80番(HTTP)または443番(HTTPS)ポートで待ち受けたリクエストをホスト名等に応じてプロキシします。
- 上部のメニューを「Hosts」、「Proxy Hosts」の順にクリック。
- 「Add Proxy Host」をクリックすると以下のようなダイアログが出るので、ここで対象のホスト名、プロキシ先等を指定できます。
- ダイアログ上部のタブで「Custom Location」を選択するとパスベースでプロキシ先を決められます。
- 同じくタブで「SSL」を選択するとLet's Encryptを使ったTLS化の設定ができます。
- 下部の「Save」ボタンを押すとプロキシ先が追加され、このDockerコンテナの80または443番ポートにアクセスすると設定に応じてプロキシされます。TLSの設定をしていた場合は自動的にLet's Encryptで証明書を取得しウェブサーバーに設定してくれます。
複数サイトある場合は上の手順を繰り返して何個でもサイトを追加できます。
4. 他にも色々できるよ
HTTPのBasic認証やIPアドレスを用いたアクセス制御、カスタムのNginx設定などもGUIから簡単にできます。
あとがき
CUIでやっていた面倒なNginxやLet's Encryptの設定をGUIで簡単に行えるので便利です。GUIのデザインもいい感じなので、趣味用や実験用に色々なセルフホストのウェブアプリを立てたくなりますね。