Difyで作成したチャットやワークフローは、デフォルトでは誰でもURLにアクセスできてしまいます。
そこで、特定のURLのみにBasic認証(ユーザー名とパスワードによるアクセス制限)をかけることで、外部からの不正アクセスを防止できます。
以下に、ブログ記事として使える概要(導入文)を追加し、併せてプライベート情報の警告も明記しました。記事冒頭に置くのがおすすめです。
環境
Xserver VPS
【仕様】
vCPU 4コア
メモリ4G
NVMe SSD 100GB
OS: AlmaLinux9.5
手順概要
手順は以下のような流れです:
-
必要なパッケージのインストール(apache2-utils)
-
htpasswd ファイルの作成
-
nginx設定ファイルへの認証ルールの追加
-
Dockerコンテナの再起動による反映
サーバーへのSSHログインから設定の確認まで、具体的なコマンド付きで紹介しているので、再現しやすい構成になっています。
Difyのチャットを限定公開したい方や、アクセス制御を強化したい方におすすめの内容です。
🔧 手順
1. サーバーへSSHログイン
ssh root@{VPSのIPアドレス}
2. htpasswd
コマンドのインストール(初回のみ)
sudo apt update
sudo apt install apache2-utils
確認コマンド:
which htpasswd
# => /usr/bin/htpasswd と表示されればOK
3. .htpasswd
ファイルを作成
設定ファイルのあるディレクトリに移動:
cd /root/dify/docker/nginx/conf.d/
3-1. .htpasswd
が存在しない場合
sudo htpasswd -c ./.htpasswd exampleuser
3-2. .htpasswd
が既にある場合(ユーザー追加)
sudo htpasswd ./.htpasswd exampleuser
確認:
cat .htpasswd
# => exampleuser:$apr1$.... のように表示されればOK(パスワードは暗号化)
4. nginx設定ファイルに認証ルールを追加
vi /root/dify/docker/nginx/conf.d/default.conf.template
以下のlocationブロックを追記(xxxxx
は対象チャットのID等に置き換えてください):
location /chat/xxxxx {
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
proxy_pass http://web:3000;
include proxy.conf;
}
5. Dockerコンテナの再起動で反映
cd /root/dify/docker/
docker compose down
docker compose up -d
6. 設定の動作確認
docker exec -it docker-nginx-1 /bin/sh
cd /etc/nginx/conf.d
cat .htpasswd
cat default.conf
.htpasswd
にユーザーが登録されているか、default.conf
にBasic認証設定が含まれているか確認してください。