面倒な設定ファイルはドブに捨てろ!NPMで実現するスマートなリバースプロキシ管理術
NginxProxyManager/nginx-proxy-manager
これはな、Nginxっていう、インターネットの世界じゃマジで最強のウェブサーバー・リバースプロキシを、Dockerの上で、超簡単に管理できるようにしたツールだ!
ぶっちゃけ、Nginxの設定ファイル(nginx.confとか)を直接いじるのって、めんどくさいし、ちょっとミスると設定がぶっ壊れるだろ?
NPMを使うと、そのめんどくさい設定作業を全部ウェブブラウザの画面でポチポチやるだけで済むんだ!具体的には...
リバースプロキシ設定が爆速
自分の裏側にあるサーバー(WebアプリとかAPIとか)に、ドメイン名(例app.example.com)を設定して流すのが一瞬で終わる。
SSL/TLS(HTTPS)がタダで手に入る
Let's Encryptっていう証明書を、自動で取ってきて、自動で更新してくれる。手動で証明書を設定する手間がゼロだ!
アクセス制御も簡単
特定のIPアドレスだけ許可したり、ベーシック認証(ID/Pass)を設定したりも、画面からすぐできる。
Docker環境との相性が最強
Docker Composeでサービスを立てて、NPMで一元的にアクセスを管理するのが、今のイケてる開発環境の定番だ!
要するに、時間のかかる雑用設定から解放されて、本業の開発に集中できるってわけよ!
NPMはDockerコンテナで動かすのが基本だ。だから、お前の環境にDockerとDocker Composeが入ってる前提で話を進めるぜ。
このファイルをコピペして使ってみな!これが一番簡単で早いやり方だ。
version: '3.8'
services:
app:
# イメージはこれを使え!
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
# ポート80(HTTP)と443(HTTPS)は、
# 外部からアクセスするために必要だ!
- '80:80'
- '443:443'
# 管理画面アクセス用のポート。好きな番号に変えてもOKだぜ。
- '81:81'
volumes:
# 設定ファイルやSSL証明書を永続化する場所。超重要!
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
上記のdocker-compose.ymlファイルをどこかに保存しろ。
そのディレクトリで、このコマンドを実行だ!
docker compose up -d
これでNPMのコンテナがバックグラウンドで起動するぜ。
ブラウザを開いて、以下のURLにアクセスだ!
http://<お前のサーバーのIPアドレスまたはlocalhost>:81
初めてアクセスしたときは、以下の初期アカウントでログインするんだ。
| 項目 | 値 |
[email protected] | |
| Password | changeme |
注意! ログインしたら、すぐにお前のメールアドレスとパスワードに変更しろよ!セキュリティはマジで大事だぜ!
ログインして管理画面に入ったら、実際にリバースプロキシを設定してみよう。
お前がポート3000で動かしてるNode.jsのWebアプリ(例http://localhost:3000)があったとするぜ。これにapi.my-project.netってドメインでアクセスできるようにする。
管理画面のメニューから "Proxy Hosts" に行け。
"Add Proxy Host" ボタンを押せ。
設定画面で、以下のように入力だ!
| フィールド | 入力する値 | 補足 |
| Domain Names | api.my-project.net | 外部からアクセスしたいドメイン名。 |
| Scheme | http | ターゲットサーバーがHTTPで動いている場合。 |
| Forward Hostname / IP | 172.17.0.1 または host.docker.internal | NPMから見たターゲットサーバーのIP。Dockerネットワーク内で動いてるなら、コンテナ名やDockerホストのIP(環境による)を指定する。 |
| Forward Port | 3000 | ターゲットサーバーのポート番号。 |
"SSL" タブに行け。
"Force SSL" にチェックを入れろ!
"Issue a new SSL certificate" を選んで、"Save" だ!
これで、https://api.my-project.netにアクセスすると、裏側のポート3000のWebアプリに安全に繋がるようになるってわけだ!Nginxの設定ファイルを一行も書かずにな!最高だろ?
さあ、これでNginx Proxy Managerの基本はバッチリだ!もっと色んな設定を試して、お前の開発環境を爆速にしちまえよ!