如何为 Dify 配置 HTTP 代理(适用于无公网服务器)

Dify 默认通过 Docker 安装和管理。但在没有互联网访问能力的服务器上,Dify 默认环境并未内置代理配置。若未正确配置 HTTP 代理,后端可能会出现以下报错:

- failed to get the version of the plugin sdk: failed to find the version of the plugin sdk
- requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
- Run failed: [tongyi] Error: PluginInvokeError: {"args":"errortype":"ConnectTimeout","message":"HTTPSConnectionPool(host='dashscope.aliyuncs.com' port=443): Max retries exceeded with url:/api/v1/services/aigc/text-qeneration/qeneration(Caused byConnectTimeoutError u003curllib3.connection.HTTPSConnectionobject at 0x7ff595d05a90\u003e.Connection to dashscope.aliyuncs.com timed out.(connect timeout=300)))"

为避免此类错误,您需要为 Dify 配置代理访问互联网。

如何解决?

1. 首先确定您的代理没问题

安装好代理服务后,首先使用curl命令在宿主机进行网络联通性测试:

curl -x http://<代理IP>:<端口> https://www.google.com

若代理可用,应能正常获取网页内容,然后再为docker配置代理。

2. 配置ssrf代理

修改dify/docker下的 docker-compose.yaml 文件:

将这两个变量,替换成你的实际代理服务地址

3. 配置docker代理

修改dify/docker下的 docker-compose.yaml 文件:
在根节点x-shared-env内,追加三条代理配置

HTTP_PROXY: http://172.16.0.3:1081
HTTPS_PROXY: http://172.16.0.3:1081
NO_PROXY: localhost,127.0.0.1,192.168.0.0/16,172.16.0.0/12,firecrawl-api-1, weaviate, gdrand, db, redis, web, worker,plugin_daemon

注意:

  • 请根据您的代理 IP 地址实际替换 172.16.0.3:1081
  • NO_PROXY 列表请确保包含内部服务容器名,避免代理影响内部通信。

4. 重启docker

进入 Dify 安装目录 dify/docker,执行以下命令重建并启动容器:

docker compose up -d --force-recreate

5. 验证

服务重启后,可通过浏览器或日志观察以下内容来确认代理配置是否生效:

  • 插件是否能正常访问外部接口(如阿里云 DashScope)
  • 后台不再报连接超时或 JSON 解码错误
  • 如有问题,可进一步检查日志或与我们联系