无法通过服务器 IP 访问 Envoy Admin 服务器

Unable to access Envoy Admin server through server IP

我目前 运行 Envoy 在 Docker 容器中,但是在部署到我的服务器时无法访问 Envoy 管理服务器,即 运行 Ubuntu 20.10.

当我 运行 在我的个人机器上本地容器时 运行 Windows 11,我能够毫无问题地访问它。

这是我的特使配置:

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address:
      address: 0.0.0.0
      port_value: 9901

我的Docker文件:

FROM envoyproxy/envoy:v1.20-latest
COPY ./envoy.yaml /etc/envoy/envoy.yaml
CMD /usr/local/bin/envoy -c /etc/envoy/envoy.yaml -l debug

以及我如何 运行 Docker 容器:

sudo docker build -t envoy .
sudo docker run -d -p 9000:9000 -p 9901:9901 envoy

在 运行 容器之后,我能够验证 Docker 能够绑定到端口,如下图所示。

我试图通过我的浏览器访问管理门户,方法是尝试访问 123.123.123.123:9901(其中 123.123.123.123 是一个示例 public IP)。我在端口 80 上提供了一些东西,我可以使用服务器的 public IP 访问它,所以看起来问题出在我的 Envoy/Docker 配置上。我做错了什么?

原来这是我的疏忽。我使用 Google Compute Engine 作为我的服务器 VM,当我最初查看防火墙设置时,我看到了一系列已启用的端口,但没有意识到它们只能由vm 本身通过本地主机。我以为端口 publicly 暴露了,但我错了。我意识到是这种情况,因为我能够通过 curl localhost:9901 curl 管理员 url,但无法访问 server-ip:9901。在我的 VM 的 GCP 防火墙设置上将端口 9901 公开到 public 后,它起作用了,所以这不是服务器配置问题,而是防火墙配置问题。