記事一覧:https://qiita.com/takulabo/items/d5f56132c02d4136687c
nginxセットアップしよう(Dify 透過リバースプロキシ)
nginxをセットアップして、URLアクセスできるようにする。
複数のサービスを起動した場合の競合を避けるように整理できます。
現状:http://192.168.1.10:3000
変更:http://192.168.1.10/dify
※将来的に/zabbix、/ollama等利用しやすくなります。
フォルダ構成
/home/user/
└─ services
├─ dify/
└─ nginx-gw/
①nginxセットアップ手順
nginx-gw用ディレクトリ作成
cd ~/services
mkdir nginx-gw
cd nginx-gw
nginx-gw用 docker-compose.yml 作成
nano docker-compose.yml
下記をコピペし保存します。
services:
nginx-gw:
image: nginx:latest
container_name: nginx-gw
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
networks:
- service-nw
networks:
service-nw:
external: true
「Ctrl+o→」[Enter]
「Ctro+x」
上記ショートカットキーにて保存できます。
Docker ネットワーク確認・作成
docker network ls
service-nw が無ければ作成:
docker network create service-nw
設定値を確認
:~/services/nginx-gw $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
046ca331f072 langgenius/dify-api:1.11.2 "/bin/bash /entrypoi…" 4 days ago Up 4 days 5001/tcp docker-api-1
e454280af563 langgenius/dify-web:1.11.2 "/bin/sh ./entrypoin…" 4 days ago Up 4 days 3000/tcp docker-web-1
cc607ec9d9b1 nginx:latest "sh -c 'cp /docker-e…" 4 days ago Up 4 days 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp docker-nginx-1
host:~/services/nginx-gw $
proxy対象
IMAGE: langgenius/dify-web:1.11.2
PORTS: 3000/tcp NAMES: docker-web-1
nginx(Dify 標準)
IMAGE: nginx:latest
PORTS: 80:80 NAMES: docker-nginx-1
nginx.conf 作成(最小構成)
nano nginx.conf
nginx.conf 編集
events {}
http {
server {
listen 80;
# /dify → Dify
location /dify/ {
proxy_pass http://web:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Difyが返す /apps を吸収する
location /apps {
proxy_pass http://web:3000/apps;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
difyのyml(network:)を編集
cd ~/services/dify/docker
nano docker-compose.yml
docker-compose.yml追記
networks:の一番下に追記
service-nw:
external: true
difyのyml(web:)を編集
nano docker-compose.yml
docker-compose.yml追記
web:の一番下に追記
networks:
- service-nw
.env に PROJECT_NAME を置く
cd ~/services/nginx-gw/docker
nano .env
以下を追記
COMPOSE_PROJECT_NAME=nginx-gw
cd ~/services/dify/docker
nano .env
以下を追記
ファイル末尾に追記
COMPOSE_PROJECT_NAME=dify
dify を再起動
cd ~/services/dify/docker
docker compose down
docker compose up -d
nginx-gw を再起動
cd ~/services/nginx-gw/docker
docker compose down
docker compose up -d
==========================
ポート重複で起動できないとき
cd ~/services/dify/docker
docker compose down
cd ~/services/nginx-gw/docker
docker compose down
ps | egrep ':(80|5003)'
ポート削除
docker rm -f docker-nginx-1 docker-plugin_daemon-1
表示されないことを確認
ps | egrep ':(80|5003)'
==========================