一、为什么中转机不能访问 http://app:80
因为:
app/portainer是 Docker 容器名- 只在 源站 Docker 网络内有效
- 中转机完全无法解析
二、正确方案(推荐)
容器端口绑定 WireGuard IP
三、docker-compose 示例
services:
app:
image: your-app
ports:
- "10.100.0.2:8081:80"
portainer:
image: portainer/portainer-ce
ports:
- "10.100.0.2:9000:9000"
启动:
docker compose up -d
四、验证监听地址
ss -lntp | grep 10.100.0.2
应看到:
LISTEN 10.100.0.2:9000
不应出现 0.0.0.0:9000
五、中转机验证回源
curl -I http://10.100.0.2:9000
六、源站防火墙(强烈建议)
ufw allow from 10.100.0.1 to any port 9000
ufw default deny incoming