はい、承知しました。Nginxのインストールから運用まで、これまでの内容を整理してまとめます。
1. Nginxのインストール
Difyコンテナ内のNginxではなく、ホストサーバーにNginxをインストールします。これは、Difyの各インスタンスへのリクエストを振り分けるリバースプロキシとして機能させるためです。
- システムユーザーの作成(任意): Nginxが特権のないユーザーで実行されるよう、ユーザーとグループを作成します。
Bash
sudo groupadd nginx sudo useradd -g nginx nginx
- パッケージのインストール: OSのパッケージマネージャー(Ubuntu/Debianの場合は
apt
)でNginxをインストールします。Bash
sudo apt update sudo apt install nginx
2. Difyコンテナの設定変更
Difyの各コンテナ(difyai
とaidify
)が、ホストのNginxリバースプロキシと連携できるように設定を変更します。
docker-compose.yml
のポート設定変更: 各環境のdocker-compose.yml
ファイルを開き、Nginxサービスのports
設定を、ホストの**ローカルループバックアドレス(127.0.0.1
)**にバインドするように変更します。これにより、外部からの直接アクセスはできなくなり、ホストのNginx経由でのみアクセスが可能になります。difyai
環境:8080
ポートを使用YAML
services: nginx: ports: - '127.0.0.1:8080:80'
aidify
環境:8081
ポートを使用YAML
services: nginx: ports: - '127.0.0.1:8081:80'
NGINX_HTTPS_ENABLED
の設定変更: 各Dify環境の.env
ファイルで、NginxコンテナがHTTPSを無効にするように設定します。これは、HTTPSの処理はホストのNginxが行うためです。Ini, TOML
NGINX_HTTPS_ENABLED=false
3. Nginxリバースプロキシの設定
ホストのNginxが、各ドメインへのリクエストを対応するDifyコンテナに振り分けるように設定します。
- 設定ファイルの作成:
/etc/nginx/sites-available/
ディレクトリにdify.conf
というファイルを作成し、以下の内容を記述します。Nginx
server { listen 80; server_name difyai.mirror-master.com aidify.mirror-master.com; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name difyai.mirror-master.com; ssl_certificate /etc/ssl/difyai.crt; ssl_certificate_key /etc/ssl/difyai.key; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } server { listen 443 ssl; server_name aidify.mirror-master.com; ssl_certificate /etc/ssl/aidify.crt; ssl_certificate_key /etc/ssl/aidify.key; location / { proxy_pass http://localhost:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
- 設定ファイルの有効化: 古い設定ファイルを削除し、新しい設定を有効化するためのシンボリックリンクを作成します。
Bash
sudo rm /etc/nginx/sites-enabled/* sudo ln -s /etc/nginx/sites-available/dify.conf /etc/nginx/sites-enabled/
4. 運用と再起動
設定変更を適用し、両方のDifyインスタンスを安定して稼働させます。
- Portの接続確認: Nginxの動作を確認します。
sudo lsof -i :80 sudo lsof -i :443
- 設定のテスト: Nginxの設定に構文エラーがないか確認します。
Bash
sudo nginx -t
- NginxとDockerコンテナの再起動: ホストのNginxと、それぞれのDifyコンテナを再起動します。
Bash
sudo systemctl restart nginx cd ~/difyai/docker sudo docker-compose up -d cd ~/aidify/docker sudo docker-compose up -d
- サーバー再起動後の確認:
restart: always
の設定により、サーバー再起動後も両方のDifyインスタンスが自動で起動します。sudo docker ps
でコンテナが正常に稼働しているか確認してください。
この手順により、複数のDifyインスタンスを1台のサーバーで、それぞれのドメイン名で安全に運用できます。
コメント