以现在用的 Nginx Proxy Manager 2.11.3 为例,Web 管理界面只提供:
没有界面化的:
所以,要在 同一个域名 上做“主服务 + 降级服务容灾”,只能用两类办法:
/data/nginx/custom/http_top.conf 定义 upstream(一次性手工)proxy_pass http://my_backend_servers; 引用换句话说:目前没有“纯点点点、不写配置片段”的图形化降级方案,你现在这套就是标准的高级用法。
主题:基于 Nginx Proxy Manager 的 Docker 容器做同域名多服务降级容灾
目标:同一个域名指向两个后端服务,主服务不可用时自动切换到降级服务(Failover),无需人工干预。
example.com主服务 A,例如 124.xxx.xxx.120:13210降级服务 B,例如 43.xxx.xxx.126:8001面向场景:你在家里的 Windows 笔记本(Surface Laptop 2)上运行若干 Docker 服务(例如端口 3210、5432、8181),家中宽带在 大内网/NAT 后,没有公网 IP;你已有一台有公网 IP 的 云服务器,并已部署 Nginx Proxy Manager(NPM)。目标是通过 frp 建立安全隧道,让手机在 5G 外网也能访问这些服务。
NAT:网络地址转换,将大量私网地址通过少量公网地址上网,导致内网设备无法被公网主动访问。
text手机/外网 → 域名(Nginx Proxy Manager, 云) → 127.0.0.1:远程端口(frps) ↓ frp 隧道 家中 Windows: 本地端口 (Docker 服务)
隧道:指通过中间节点转发建立的端到端连接通道,常用于穿透 内网 或 防火墙。
TOML:一种人类友好的配置文件格式,键值以 key = "value" 表示,层级清晰、类型明确。
很久没用Dify,新版本代理配置比0.x.x版本变得复杂了些。论坛里搜索了下,没有一次通关的讲解,自己动手搭好测试后,丢篇手册给有需要的佬友们操作。
解决的问题:传统代理配置方式后,知识库出现不能连接的问题,或者沙盒、函数执行某些流程出现内部链接报错的问题,这些其实都是没有按照dify自身的网络链路上去处理,相对粗暴的为了海外模型的plugin进行了代理导致的。
从1.x.x版本后,某个版本dify网络安全的优化后,选择将 Dify 内置的 ssrf_proxy 服务作为了一个网络的处理中心,所以我们就基于它,做链接到一个上游代理(如 Clash),再让指定域名下的所有外部流量(特别是 plugin_daemon 服务)通过此代理链,解决OpenAI或者Gemini的api网络访问问题,同时保持配置的灵活性和安全性,避免内部网络链路出现问题。
ssrf_proxy 服务配置一个上游 HTTP 代理,使国外的模型的api域名,经由它的流量都通过这个指定的上游出口。(当然上游这个出口需要你自行代理,且可访问Google,这是前提条件)plugin_daemon 服务的外网网络请求,强制通过 ssrf_proxy,从而实现对插件外部访问的全面代理。.env 文件中提供清晰的配置选项,方便用户在不同操作系统(macOS、Windows、Linux)上快速设置。代理链条,其流量走向如下:
plugin_daemon → ssrf_proxy (端口 3128) → 上游HTTP代理 (例如: host.docker.internal:7890) → 互联网