简介
当你需要通过 Nginx Proxy Manager(NPM)转发内网服务(如 go-music-dl)时,可以直接在 NPM 中配置 Basic Auth,让访问者在进入目标服务前先弹出登录框。本文记录了 NPM 与目标服务在不同服务器上的配置步骤。
第一步:在 NPM 所在服务器生成 htpasswd 文件
NPM 容器内使用了 Nginx,Nginx 的 Basic Auth 依赖 htpasswd 文件来存储账号密码。
# 安装工具(Debian/Ubuntu)
apt install -y apache2-utils
# 创建目录和文件
mkdir -p /opt/npm/htpasswd
htpasswd -c /opt/npm/htpasswd/musicdl admin
运行后输入你想设置的密码,完成后确认文件已生成:
cat /opt/npm/htpasswd/musicdl
第二步:确认 NPM 容器挂载了该目录
打开 NPM 的 docker-compose.yml,确保 volumes 中包含 htpasswd 目录的挂载:
volumes:
- ./data:/data
- /opt/npm/htpasswd:/etc/nginx/htpasswd
重启 NPM 容器使挂载生效:
docker compose down
docker compose up -d
第三步:NPM 中创建 Proxy Host
在 NPM 管理界面中:
- Domain Names:填入你绑定的域名或 IP
- Scheme:
http - Forward Hostname / IP:go-music-dl 所在服务器的 内网 IP(或公网 IP)
- Forward Port:
8080
保存后,编辑该 Proxy Host → 展开 Advanced(高级) → 填入以下 Nginx 配置:
location / {
auth_basic "Music DL Login";
auth_basic_user_file /etc/nginx/htpasswd/musicdl;
proxy_pass http://你的music-dl_IP:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
⚠️
你的music-dl_IP填 go-music-dl 那台机器的 IP(如192.168.1.100),确保两台机器的 8080 端口互通(检查防火墙/安全组)。
第四步:验证
浏览器访问 NPM 绑定的域名,会弹出账号密码框 → 输入 admin 和你设置的密码 → 成功进入 go-music-dl。