您能否帮我弄清楚为什么我的 Adguard Home 实例在初始设置期间通过端口 3000 正常工作,但完成设置后我无法访问端口 80(Azure Web App HTTP 运行状况探测也无法访问)?
一些背景:我想获得 Azure 的实践经验,以准备 AZ-104 考试。当然,我也在向 Microsoft learn 以及那些为您准备考试实际问题的网站学习。
但是我需要一些实践经验才能掌握理论,而且我喜欢边做边学。我确实在托管 web/mail/dns/proxy/game/smarthome/etc 服务器方面拥有多年的业余爱好经验,但 Azure 和 Docker 对我来说是全新的(除了拥有几个 Azure 基础证书之外)。我的方法是在 Azure 上以尽可能多的不同方式安装 Adguard Home,至少触及 Azure 的这些方面。我已经通过 Azure 容器服务,然后使用界面以及 SSH / CLI 成功地为 Windows 和 Linux VM 完成了此操作。然而,对于 Azure Web Apps,我陷入了困境。
我能够成功从 Docker hub 中提取镜像。经过大约 2 个小时的摆弄,我弄清楚了如何分配/打开端口、启动通过端口 3000 为安装页面提供服务的 Web 服务器以及如何安装卷,以便安装在周期/重新启动之间实际上是持久的。
安装完成后,Adguard Home 会将其提供 WebUI 的端口从端口 3000 切换到端口 80。我的想法是我需要将 WEBSITES_PORT、EXPOSE 和 PORT 从 3000 调整为 80。但是,即使我知道该应用程序在端口 80 上广播,探测器未检测到它,我也无法访问安装后的 Web UI。有谁知道问题可能是什么?顺便说一句,在日志中(通过在“高级工具”页面上下载logs.zip 访问)Adguard 不会抛出任何错误。它甚至抛出一条信息消息,指示 webui 应在 127.0.0.1:80 上可用(DNS 服务器在 127.0.0.53 上)。
这是否是因为 Adguard Home 在 127.0.0.1:80 而不是 0.0.0.0:80 上广播?
TL;DR 应用程序运行正常,安装后可立即访问。配置完成后,WebUI 端口从 3000 更改为 80,现在应用程序无法再访问。
谢谢!
我已经在 Docker 容器中设置了 Express.js 应用程序和
AdGuard
Home,您可以使用 Docker Compose 来管理这两个服务。创建一个 docker compose 文件并配置端口,如下所示。
docker-compose.yml:
version: '3'
services:
express-app:
image: node:14
working_dir: /usr/src/app
volumes:
- ./express-app:/usr/src/app
ports:
- "3000:3000"
command: ["npm", "start"]
adguard:
image: adguard/adguardhome
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80"
volumes:
- ./adguard-data:/opt/adguardhome/work
command: ["./AdGuardHome", "-c", "/opt/adguardhome/AdGuardHome.yaml"]
在 Azure 门户中,导航到您的 Web 应用程序,转到“配置”,然后检查
WEBSITES_PORT
是否设置为 80
,即使它也是默认端口。
Dockerfile:
# Use the official AdGuard Home image
FROM adguard/adguardhome
# Expose necessary ports
EXPOSE 53/tcp 53/udp 80/tcp
# Set AdGuard Home configuration to bind to all available interfaces
RUN sed -i 's/bind_host: 127.0.0.1/bind_host: 0.0.0.0/' /opt/adguardhome/AdGuardHome.yaml
# Command to run AdGuard Home
CMD ["./AdGuardHome", "-c", "/opt/adguardhome/AdGuardHome.yaml"]
RUN
命令使用 sed
修改 AdGuard Home 配置文件 (AdGuardHome.yaml
) 并将 bind_host
从 127.0.0.1
更改为 0.0.0.0
。此修改允许 AdGuard Home 侦听所有可用的网络接口。
docker run -p 53:53/tcp -p 53:53/udp -p 80:80/tcp -v /path/to/config:/opt/adguardhome/work --name adguard-home -d my-adguard-home:latest
Docker状态:
结果: